Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

How can I use the coupled system of matrices (ODE45) using a frequency span?

1 vue (au cours des 30 derniers jours)
Keith Grey
Keith Grey le 11 Juin 2020
Clôturé : MATLAB Answer Bot le 20 Août 2021
I haven't found much information in the Documentation addressing a case like this, so I'm unsure of where to even begin.
The following system of equations is put into matrix notation (presumably correctly done).
I'm trying to use ODE45 to solve and plot this system on a frequency span of 50 to 200 Hz.
% Matrices shown above (Corresponding x1 values 1st column & x2 in the 2nd.)
f = 50:1:200; % Frequency (Hz)
A = [23.3 0; 0 240];
B = [-5926 4566; -11133 4566];
C = [-4 0.39; 0.39 -1.34];
D = [0; -1(2 * pi * f)];

Réponses (1)

Ameer Hamza
Ameer Hamza le 12 Juin 2020
There is no 'f' term in this system of ODE. Following shows how to solve this using ode45
t = linspace(0, 10, 1000); % solve the equation for t in [0, 10]
ic = [0; 0; 0; 0]; % initial condition
[t, y] = ode45(@(t, x) odeFun(t, x), t, ic);
subplot(2,2,1)
plot(t, y(:,1))
title('x1')
subplot(2,2,2)
plot(t, y(:,2))
title('x2')
subplot(2,2,3)
plot(t, y(:,3))
title('x1dot')
subplot(2,2,4)
plot(t, y(:,4))
title('x2dot')
function dxdt = odeFun(t, x)
% x(1)=>x1, x(2)=>x2, x(3)=>x1', x(4)=>x2'
dxdt = zeros(4, 1);
dxdt(1) = x(3);
dxdt(2) = x(4);
dxdt(3) = 1/23.3*(5926*x(3) - 4566*x(4) + 4*x(1) - 0.39*x(2));
dxdt(3) = 1/240*(-4566*x(3) + 11133*x(4) - 0.39*x(1) + 1.34*x(2) - 1);
end

Cette question est clôturée.

Produits


Version

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by