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

Posted

技术标签:

【中文标题】使用嵌入式matlab功能块的simulink模型中信号的频率内容?【英文标题】:Freqeuncy content of a signal inside a simulink model using embedded matlab function block? 【发布时间】:2013-06-17 11:07:53 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

我相信您在模型中“实时”处理数据的方法是合理的,但是我相信 index_Vx*Fs/length(buffo_Vx) 不会给出预期的结果,buffo_Vx = [Vx;buffi_Vx(1:end-1)]; 可能需要 buffo_Vx = [Vx; bufferi_Vx(1:end-1)];` 为您的频率转换检查此link。

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

光谱密度应该会有所帮助。

【讨论】:

感谢 macduff 的即时回复。祝你有美好的一天!

以上是关于使用嵌入式matlab功能块的simulink模型中信号的频率内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Simulink 的 Matlab 功能块内运行引用模型?

Simulink 中的嵌入式函数问题

嵌入式 MATLAB 函数 - Simulink

从 Simulink 中的 Matlab 功能块调用的 sim 命令的 Simout 输出

我可以将 simulink 中的 matlab 函数中的参数设置为可调吗?

在simulink的嵌入式matlab函数中使用scatterInterpolant变量