How to calculate a numerical approximate derivative vector of a function?
    4 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    Jabir Al Fatah
 am 31 Mai 2014
  
    
    
    
    
    Kommentiert: Star Strider
      
      
 am 31 Mai 2014
            I have a given formmula: Yprimenum(i) = (Y(i+1) – Y(i)) / ∆X, where ∆X is the X step length, or equivallently X(i) – X(i-1). And I also have two given functions: X= [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 ] Y= [5 6 7 7.5 7.5 7.5 6.5 2.5 -5 -6 -6]
Now my task is to plot this function, Y, and calculate and plot the corresponding Yprimenum in the same graph. This is what I tried:
    x= [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 ] 
y= [5 6 7 7.5 7.5 7.5 6.5 2.5 -5 -6 -6] 
yprime=2.*x; 
Yprimenum=zeros(1, length(x)-1); 
for i= 1:length(x)-1; 
Yprimenum(i)=(y(i+1)-y(i))./(x(i+1)-x(i)); 
end 
figure; 
hold on; 
plot(x,y); 
plot(x,yprime); 
plot(x,Yprimenum(i)); 
hold off; 
shg;
0 Kommentare
Akzeptierte Antwort
  Star Strider
      
      
 am 31 Mai 2014
        Your derivative, Yprimenum, is by definition one element shorter than x, so you have to eliminate the last entry of x to plot it:
x= [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 ] 
y= [5 6 7 7.5 7.5 7.5 6.5 2.5 -5 -6 -6] 
yprime=2.*x; 
Yprimenum=zeros(1, length(x)-1); 
for i= 1:length(x)-1; 
    Yprimenum(i)=(y(i+1)-y(i))./(x(i+1)-x(i));
end 
figure; 
hold on; 
plot(x,y,'-b'); 
plot(x,yprime,'g'); 
plot(x(1:end-1),Yprimenum,'r'); 
hold off; 
shg;
This is unavoidable with the method you used (and that the diff function uses) but there are ways to deal with it. This is one such.
2 Kommentare
Weitere Antworten (1)
  Andrei Bobrov
      
      
 am 31 Mai 2014
        
      Bearbeitet: Andrei Bobrov
      
      
 am 31 Mai 2014
  
      x= [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 ] 
y= [5 6 7 7.5 7.5 7.5 6.5 2.5 -5 -6 -6] 
Yprimenum = diff(y)./diff(x);
other variant
Yprimenum = gradient(y,x);
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Discrete Data Plots finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


