【发布时间】:2015-11-29 10:53:39
【问题描述】:
我得到了原始的正弦波(Image 1)和一个嘈杂的版本(Image 2)。
图片 1
图片 2
现在要找到原始信号,我正在查看图表前半部分中具有最大值的频率。这将是 21。当我尝试使用下面的代码创建一个频率为 21 的正弦波时,我得到 Image 3 的结果。
% Creating the Sine Wave
t = (1:1:256);
A = 1;
y = A*sin(2*pi*max_index*t);
plot(t,y);
图 3
为什么会这样。我究竟做错了什么?
可运行代码
这是我的功能:
function [ ] = function1b( Sig_noise )
% Max Index is the frequency of the pure tone
noise_f = fft(Sig_noise);
s_nf = size(noise_f);
size_f = s_nf(2);
max = 0;
max_index = 1;
for n = 1:(size_f/2)
if abs(noise_f(n)) > max
max = abs(noise_f(n));
max_index = n;
end
end
% Creating the Sine Wave
t = (1:1:256);
A = 1;
y = A*sin(2*pi*max_index*t);
plot(t,y);
end
我从脚本的这一部分调用它:
load('Sig'); % Original Signal
Sig_noise2=awgn(Sig,10);
function1b(Sig_noise2);
安德拉斯的解决方案
这是我似乎得到的结果:
使用linspace(0,2,100);给我这个结果:
【问题讨论】:
-
你能发布一些可运行的代码吗?对我来说这看起来不错,你的幅度不应该改变,因为 A 是恒定的,所以不知道你为什么得到这个输出。
-
@lhcgeneva 刚刚做出改变!
标签: matlab plot signal-processing noise trigonometry