How can i plot the response of function as a vector ?
3 次查看(过去 30 天)
显示 更早的评论
Hi,
To resolve a secon order differential equation i do this function , but i have a problem when i want to plot xdot.
function xdot = equacte(t,x)
% Function file for mass with spring.
% Position is first variable, velocity is second variable,load is the third variable
freq=100; %frequency (Hz)
w=2*pi*freq;
m=0.0112;
k=262.8257 ;
teta =-4.40e+03;
cp= 1.8492*10^-7;
for rload =0:20:50000
A = [0,1,0;-k/m,0,-teta/m;(-teta/rload),0,-1/(rload*cp)];
B = [0;1/m;0];
f =sin(w*t);
xdot = A*x+B*f;
end
end
In the principle program :
[t,x]=ode45(@equacte,[0:0.0004:1],[0,0,0]);
xdot=equacte(t,x);
plot(t,xdot(:,1),'O',t,xdot(:,2),'r',t,xdot(:,3),'b');
0 个评论
采纳的回答
Azzi Abdelmalek
2016-5-7
编辑:Azzi Abdelmalek
2016-5-7
What this line is doing? xdot=equacte(t,x) just write
[t,x]=ode45(@equacte,[0:0.0004:1],[0,0,0]);
plot(t,x(:,1),'O',t,x(:,2),'r',t,x(:,3),'b')
6 个评论
Azzi Abdelmalek
2016-5-7
Ok, but like you did it, the loop has no effect, only the last value will be taken in account.
Azzi Abdelmalek
2016-5-7
编辑:Azzi Abdelmalek
2016-5-7
Your function should look like
function xdot = equacte(t,x,rload)
% Function file for mass with spring.
% Position is first variable, velocity is second variable,load is the third variable
freq=100; %frequency (Hz)
w=2*pi*freq;
m=0.0112;
k=262.8257 ;
teta =-4.40e+03;
cp= 1.8492*10^-7;
A = [0,1,0;-k/m,0,-teta/m;(-teta/rload),0,-1/(rload*cp)]
B = [0;1/m;0];
f =sin(w*t);
xdot = A*x+B*f;
end
Then call it in the loop
for rload=2000:20:2040
[t,x]=ode45(@(t,x) equacte(t,x,rload),[0 1],[0,0,0]);
figure;
plot(t(2:end-1),diff(x))
end
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Spectral Measurements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!