Finding Angular Frequency of an Oscillation
6 次查看(过去 30 天)
显示 更早的评论
I have currently produced a code to plot a Van der Pol oscillator, I can calculate the period by physically looking at the graph, but I am unsure on how to do this using a MATLAB code to get a result digitally.
My main focus is to get a printed value for the angular frequency (w - omega), so my first thought was to calculate the period and then use the equation w = (2pi/T).
Please can I get some guidance on producing a small script to calculate angular frequency? (w = 1 with the current model)
I have attached the code for the oscillation below.
Thanks in advance.
% simulation parameters
DT = 0.01; % Time step
N = 10000; % number of discrete time points
% Equation parameter
mu = 0.1;
% declare array to store discrete time samples
x = zeros(1,N);
% set boundary conditions
x(1) = -0.01;
x(2) = 0.0;
% Simulate using recurrance relation
for i = 3:N
phi = mu*DT/2*(x(i-1)^2-1);
x(i) = x(i-1)*(2-DT^2)/(1+phi) - x(i-2)*(1-phi)/(1+phi);
end
% plot
plot((1:N)*DT,x,'r')
% Calculating angular frequency
0 个评论
采纳的回答
Star Strider
2020-3-31
Likely the easiest way would be to find the times of the positive peaks, then calculate from there:
[pks,pktimes] = findpeaks(x, (1:N)*DT);
Period = mean(diff(pktimes))
The findpeaks function requires the Signal Processing Toolbox. A similar function is islocalmax, introduced in R2017b. (There are still other ways if you have neither of these functions.)
2 个评论
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!