fft是不显示正确的频率或振幅

47个视图(30天)
我生成了一个示例使用笔三个正弦波信号。当我画出信号使用fft命令来查看各个频率成分,我总是在第二个(也就是一个错误。,第二次按升序)频率分量。它显示为正确频率的一半或倍数(两次/ 4次,等等)。如果是正确的频率,振幅是不正确的。其他两个频率和振幅总是正确的。
我试着添加第四个信号,但同样的问题重复第二信号。其他都是正确的。我试着用两个信号,结果都是一样的。第二个信号是错误的。
尝试重启Matlab,但重复。我尝试过不同的频率和振幅值,但它总是第二个按升序很反感。不超过4频率。我完全目瞪口呆!我不太熟悉fft,正在努力学习。附加的代码和输出图。任何帮助请将受到欢迎。
清晰的所有;
关闭所有;
f1 = 1;f2 = 2;f3 = 3;f4 = 4;% 4信号的频率,赫兹
A1 = 1;A2 = 0;A3 = 0;A4 = 0;% 4信号的振幅
f_max = max ([f1 f2 f3 f4]);%最大的信号频率
dt = 1 / (f_max * 10);%时间步
t = 0: dt: 2000 * dt;%时间向量1
x = A1 * cos(2 *π* f1 * t) + 1 * cos (A2 *π* f2 * t) + A3 * cos(2 *π* f3 * t) + A4 * cos(2 *π* f4 * t);%的最终信号
fs = 1 / dt;%采样率
tm = 0:1 / fs:(长度(x) 1) / fs;%时间向量2
X = fft (X,长度(X)) *(2 /长度(X));% fft的最终信号
mag_X = abs (X);%级
频率= 0:1 / tm(结束):fs / 2 - (1 / tm(结束));%计算频率
情节(频率、mag_X(1:长度(频率)));% fft的阴谋
包含(“频率”)
ylabel (“振幅”)

接受的答案

VBBV
VBBV 2021年10月2日
清晰的所有;
关闭所有;
f1 = 1;f2 = 2;f3 = 3;f4 = 4;% 4信号的频率,赫兹
A1 = 1;A2 = 0;A3 = 0;A4 = 0;% 4信号的振幅
f_max = max ([f1 f2 f3 f4]);%最大的信号频率
dt = 1 / (f_max * 10);%时间步
t = 0: dt: 2000 * dt;%时间向量1
x = A1 * cos(2 *π* f1 * t) + A2 * cos(2 *π* f2 * t) + A3 * cos(2 *π* f3 * t) + A4 * cos(2 *π* f4 * t);%的最终信号
fs = 1 / dt;%采样率
tm = 0:1 / fs:(长度(x) 1) / fs;%时间向量2
X = fft (X,长度(X)) *(2 /长度(X));% fft的最终信号
mag_X = abs (X);%级
频率= 0:1 / tm(结束):fs / 2 - (1 / tm(结束));%计算频率
情节(频率、mag_X(1:长度(频率)));% fft的阴谋
包含(“频率”)
ylabel (“振幅”)
你现在可以检查的区别吗?无论你得到同样的错误呢?
我认为你有一个错误的振幅在第二个任期
x = A1 * cos(2 *π* f1 * t) + A2 * cos(2 *π* f2 * t) + A3 * cos(2 *π* f3 * t) + A4 * cos(2 *π* f4 * t);%的最终信号
它应该是 A2 * cos(2 *π* f2 * t) 而不是 1 * (cos (A2 *π* f2 * t))
2的评论
M您正在
M您正在 2021年10月2日
谢谢你!我多么糊涂啊!没有看到这个错误…和spent hours trying to fix with all kinds of data. Thank you very much, Start Strider and VBBV, for your effort and time.

登录置评。

更多的答案(0)

s manbetx 845


释放

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!