【问题标题】:Approximate a signal using average value and dominant frequency使用平均值和主频率逼近信号
【发布时间】:2015-11-10 05:22:03
【问题描述】:

我有一个信号 x[n],使用fft 对其进行转换,并通过对幅度响应进行排序来提取主频率。计算平均值为 avg = mean(xn) ,其中 xn 是一个包含信号数据的 1x3142 矩阵。

如何使用这些信息绘制原始信号的近似值?老实说,我不知道该怎么做。想过使用ifft,但我不知道平均值和主导频率应该如何帮助我。

原始信号:

幅度响应:

【问题讨论】:

  • 使用这种方法可以获得的最佳效果是频率具有最大幅度响应的正弦曲线。对于复杂的变化数据,这将无法正确重建。您有我们可以看到的示例信号吗?我真的不明白如何只使用平均值(在这种情况下实际上是直流偏移),而主频率将有助于忠实地重建原始信号。
  • @rayryeng 添加了原始信号图以及问题中的幅度响应。我不明白我应该如何近似原始信号,这就是我要问的原因。
  • 顺便说一句,如果您有复杂的变化数据,响应最强的组件很可能是 0 Hz / DC。您可能想要搜索两个最大的组件......或者可能取第一个组件,然后找到接下来 10 个顶级组件的平均值......或类似的东西。但是,是的,我看不出这是如何通过仅使用主频率和平均值来完成的。你会得到的最好的东西是这个主频率的正弦曲线,垂直偏移平均值,除非这是重点。你能理解这个吗?如果是的话,我会写一个答案。
  • @rayryeng 好吧,我想我会生成一个正弦曲线,希望它足够好。感谢您的帮助。
  • 当然。顺便说一句,是否有可能获取信号本身的数据?我很想能够上传一个情节来向你展示它正在工作......主要是看看我制作的东西是否有意义。

标签: matlab signal-processing fft ifft


【解决方案1】:

好的,这是我的拙劣尝试。您需要做的是绘制频谱并确定最大峰值 - 这是平均值以及第二大峰值,这将为您提供主频率。我注意到点之间的采样时间不是恒定的,但我们希望它不会干扰事物,这应该会给我们一个很好的信号。

顺便说一句,我增加了 FFT 的点大小以提高光谱的分辨率,这样我们就可以更好地近似峰值的位置。因此,让我们绘制频谱并确保我们移动频谱以使中心频率在中间,而不是在左侧:

N = 4096; %// FFT point size
F = fft(ssd(:,2), N);
Fs = fftshift(F);
mag = abs(Fs); %// Magnitude spectrum shifted
plot(1:N, abs(mag)); %// Plot the spectrum

这是我们得到的,我添加了一些数据游标来帮助说明我的观点:

请注意,我已经手动检查了峰值的位置,因为对它们进行排序并选择最大的组件并不是最好的方法。最大的峰值显然是 DC 值,但最大峰值后面的较大值可能不一定会给您正确的结果,如您在此处看到的那样。因此,您可以通过峰值检测算法运行它以获得主峰,但我将避免这种情况给您一个结果。

如您所见,在偏移频谱中,位置 2018 和 2080 处的点对应于我们的主峰,而 2049 处的点是直流偏移/平均值。因此,创建一个新信号,我们只在频域中复制这三个位置,撤消移位,取逆,并限制任何剩余的虚部。

您还会注意到,输出长度是 FFT 点大小。您需要删除额外的输出,并且只显示原始信号包含的时间:

%// Create blank array
out_reconstruct = zeros(N,1);

%// Copy values over from shifted spectrum
out_reconstruct([2018 2049 2080]) = Fs([2018 2049 2080]);

%// Reconstruct in time domain and cap
out_reconstruct = real(ifft(ifftshift(out_reconstruct)));
out_reconstruct = out_reconstruct(1:size(ssd,1));

%// Plot
plot(ssd(:,1), ssd(:,2), ssd(:,1), out_reconstruct);

我们得到这个:

如您所见,这不是一个好的重构。您的数据存在很大的可变性,这就是为什么只有一个主要的正弦曲线不足以重建这些数据。但是,平均值或多或少是可以的,原始和重建之间的振荡是相同的......所以占主导地位的东西确实有效,但这里没有对高可变性进行建模。

【讨论】:

  • 哇。谢谢,这真的很有帮助。
  • 没问题。不确定这是否是您正在寻找的答案!
  • 好吧,我想不出别的了,我已经坚持了大约 1 天。所以我会用这个看看效果如何!
  • 当然!如果它确实有效,请考虑接受我的回答,以便社区知道您不再需要帮助......当然,只要您准备好了。祝你好运!
  • 酷!谢谢,你帮了大忙!
猜你喜欢
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 2021-10-15
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
  • 2016-11-24
相关资源
最近更新 更多