matlab中问题:x = A1 * sin(2 * pi * f1 * t) + A2 * sin(2 * pi *

问题描述:

matlab中问题:x = A1 * sin(2 * pi * f1 * t) + A2 * sin(2 * pi * f2 * t) + rand(size(t))
f1=364.21 ,f2= 124.7,A1
1个回答 分类:综合 2014-09-19

问题解答:

我来补答
你是学通信的吧.看你的描述,这题应该是时域信号有两个频率的正弦波叠加,再加上了噪声.然后通过FFT发现在两个频率上的能量较大,其他频率上能量较小,那两个频率就是f1和f2.
你刻意地去重现别人的程序,有点不合适,因为本身信号就是带有噪声的,rand是个随机的值,每次运行都不一样,无法重现.(另外此处也应写成randn,这样才是有正有负的噪声,rand产生的是0~1上的噪声,没有负值的!)
如果你是要交作业,就把下面的程序复制一下交差就行,如果真心想学,再追问好了,我设置的A1=5,A2=3,但这不是主要关键,只要A1,A2比1大.就信号就不会被噪声淹没,FFT的频谱也就能有明显的峰值.画出来的频域图用放大镜看,因为采样频率是100Khz,而峰值出现在364.21 Hz和124.7 Hz,所以集中在横轴的左边.
clc;
clear;
f1 = 364.21 * 1e-3; % unit:kHz
f2 = 124.7 * 1e-3; % unit:kHz
t = 0 :0.01 :10; % unit:ms
f = 0 :0.1 :100;
A1 = 5;
A2 = 3;
x = A1 * sin(2 * pi * f1 * t) + A2 * sin(2 * pi * f2 * t)+ randn(size(t));
x_f = fft(x);
figure(1)
subplot(2,1,1)
plot(t,x);
xlabel('t/ms');
ylabel('Amplitude');
title('Time-domain');
subplot(2,1,2);
plot(f,abs(x_f));
xlabel('f/kHz');
ylabel('Amplitude');
title('Frequency-domain');
再问: 我不是通信的,没学过matlab。太感谢了,写了这么多字,真是好人啊!能留下你的qq吗?或者你加我也行,小弟602299917,麻烦你了,有点问题想请教你,谢谢!!
再答: 我现在有点事,不能马上回复你,一会再说。OK? QQ694586874
再问: 恩 好的 谢谢了
 
 
展开全文阅读
剩余:2000
下一页:例6求步骤