Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用嵌入式matlab功能块的simulink模型内信号的频率内容?_Simulink_Matlab Coder - Fatal编程技术网

使用嵌入式matlab功能块的simulink模型内信号的频率内容?

使用嵌入式matlab功能块的simulink模型内信号的频率内容?,simulink,matlab-coder,Simulink,Matlab Coder,我试图在模拟运行时获取位移信号(例如Vx)的频率信息 我的想法是利用嵌入式Matlab功能块支持的fft命令 我执行的第一件事是将位移信号“Vx”的值存储在长度为“L”的缓冲区中 第二件事是计算缓存中存储的那些值的fft,并计算与最大振幅对应的索引值 第三,从索引值、采样频率和缓冲区长度中获取频率 嵌入式Matlab代码如下所示:- Function[freq_Vx,buffero_Vx] = fcn(Vx,bufferi_Vx) % This block supports the Em

我试图在模拟运行时获取位移信号(例如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

这是在模拟运行时获取信号频率内容的正确方法吗?

我相信您在模型中“实时”处理数据的方法是合理的,但是我相信
索引Vx*Fs/length(buffo\u Vx)
不会给出期望的结果,
buffo\u Vx=[Vx;buffi\u Vx(1:end-1)]可能需要是buffo_Vx=[Vx;bufferi_Vx(1:end-1)]`检查这个频率转换

出于诊断目的,请查看Simulink库浏览器上的Simulink Extras->Additional Sinks块


光谱密度应该会有帮助。

谢谢麦克达夫的及时回复。祝您有个美好的一天!