
Solving a second order differential equation with matlab.
4 ビュー (過去 30 日間)
古いコメントを表示
Hey,
I wanted to plot a second order differential equation in Matlab to see how it would look. The equation is the following:
y = x + 2*cos(omega)*y'-y''
This equation corresponds to an IIR filter with the poles on the unit circle. I will be using it to generate harmonic oscillations.
"x" only gives a unit impulse, and omega = 2*pi*(f0/fs), and is used to control the oscillations.
Please show me what I should write to be able to see these oscillations in Matlab.
Thanks in advance.
0 件のコメント
採用された回答
madhan ravi
2018 年 12 月 14 日
編集済み: madhan ravi
2018 年 12 月 14 日
syms y(x)
dy=diff(y);
dy2=diff(y,2);
omega=5; %your value acheived by 2*pi*(f0/fs) formula
ode=y == x + 2*cos(omega)*dy-dy2 ;
vars = y(x);
V = odeToVectorField(ode)
M = matlabFunction(V,'vars', {'x','Y'})
interval = [0 10]; %time interval
y0 = [0 0]; %initial conditions
ySol = ode45(M,interval,y0);
tValues = linspace(interval(1),interval(2),1000);
yValues = deval(ySol,tValues,1); %number 1 denotes first solution likewise you can mention 2 for the next solution
plot(tValues,yValues)
hold on
yValues = deval(ySol,tValues,2);
plot(tValues,yValues,'r')

2 件のコメント
madhan ravi
2018 年 12 月 15 日
編集済み: madhan ravi
2018 年 12 月 15 日
Would I be better off implementing the corresponding filter in Simulink and viewing that way?
I have no experience with simulink.. but I am pretty sure it's more handy to simulate
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!