我试图在模拟运行时获取有关位移信号(例如 Vx)的频率信息。
我的想法是利用嵌入式 Matlab 功能块支持的 fft 命令。
我执行的第一件事是将位移信号“Vx”的值存储在长度为“L”的缓冲区中。
第二件事是计算存储在缓冲区中的那些值的 fft 并计算对应于最大幅度的索引值。
第三件事是从索引值、采样频率和缓冲区长度获取频率。
嵌入式 Matlab 代码如下:-
Function[freq_Vx,buffero_Vx] = fcn(Vx,bufferi_Vx)
% This block supports the Embedded MATLAB subset.
% See the help menu for details.
buffo_Vx = [Vx;buffi_Vx(1:end-1)]; % buffer which stores the values of signal 'Vx'
Fs = 2000;
nfft = 2^nextpow2(length(buffo_Vx));
[max_Vx,index_Vx] = max(abs(fft(buffo_Vx,nfft)));
freq_Vx = index_Vx*Fs/length(buffo_Vx);
end
这是在模拟运行时获取信号频率内容的正确方法吗?