How can I create expression or vector function handle, then plot it ?
    5 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
How can I create vector function handle (anonymous function) with product a scalar value, then plot result. Clearly, I want to plot this formula
Let f(x,ym)= (1-exp(x-ym)/h); and 
iX(x)=1/6.f(x,ym(1))+
      7/6.f(x,ym(2))+
     25/6.f(x,ym(3))+
     43/6.f(x,ym(4));
iY(x)=1/5.f(x,ym(1))+
      2/5.f(x,ym(2))+
     14/5.f(x,ym(3))+
      4/5.f(x,ym(4));
This code without loop but give me: ''Error using plot Conversion to double from sym is not possible''.
clear all;clc;a=0;b=2;n=3;h=(b-a)/n;ym=a:h:b;                                      
X=[ 1/6, 7/6, 25/6,43/6];  % Data 
Y=[ 1/5, 2/5, 14/5,14/5];                                                   
f=@(x,ym) (1-exp(x-ym)/h);                                                              
% with syms 
syms x; 
iX=f(x,ym(1:length(ym))).*X; % result iX= [f.1/6 , f.7/6 , f.25/6 , f.43/6]
iY=f(x,ym(1:length(ym))).*Y;
iFx= sum(iX);iFy=sum(iY);   % result  iFx= f.1/6 + f.7/6 + f.25/6 + f.43/6
x=ym;
plot(x,iFx,'r+');hold on;plot(x,iFy,'og');
Moreover, I tired to use a alternate codes with loop condition but the error persists as conversion to logical from sym is not possible.
% clear all;clc
% a=0;b=2;n=3;h=(b-a)/n;ym=a:h:b; 
% %
% X=[ 1/6, 7/6, 25/6,43/6]; % Data
% Y=[ 1/5, 2/5, 14/5,4/5];
% %   
% f=@(x,ym) (1-exp(x-ym)/h);                
% %
% syms x  %double(subs(x))
% iX=cell(1,length(ym));iY=cell(1,length(ym)); %  cell, iX{k} and iY{k} 
% % iX=zeros(1,length(ym));iY=zeros(1,length(ym));
% for k=1:length(ym)           
% %          iX(k) =   f(x,ym(k)).*X(k);
% %          iY(k) =   f(x,ym(k)).*Y(k);  
%            iX{k} = @(x,k)  f(x,ym(k)).*X(k);
%            iY{k} = @(x,k)  f(x,ym(k)).*Y(k);
%            iX(x,k);
% end       
% whos 
% x=ym; 
% plot(x,iX{:},'r:');hold on;plot(x,iY{:},'b--');
please, how can i fix it?
2 Commenti
Risposte (1)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


