作业帮 > 综合 > 作业

哪位大哥能把xn=sin(0.2*pi*n)+sin(0.4*pi*n)+sin(0.6*pi*n)+randn(siz

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/08 22:42:12
哪位大哥能把xn=sin(0.2*pi*n)+sin(0.4*pi*n)+sin(0.6*pi*n)+randn(size(n));用matlab把正弦信号分离出来
N=512;Nfft=1024;Fs=2*pi;
n=0:N-1;
xn=sin(0.2*pi*n)+sin(0.4*pi*n)+sin(0.6*pi*n)+randn(size(n));
不胜感激,有什么要求也可提出来,人民币也可以.只要是三个正弦信号+一个随机信号并把其分离出来就行.我完全是菜鸟,不懂.
程序:
N=512;
Nfft=1024;
Fs=2*pi;
n=0:N-1;
xn=sin(0.2*pi*n)+sin(0.4*pi*n)+sin(0.6*pi*n)+randn(size(n));
y1= fft(xn);
y = fftshift(y1); 
figure; 
subplot(2,1,1); 
plot(n,xn); 
title('时域图')
subplot(2,1,2); 
f=(0:length(y)-1)'*Fs/length(y);
plot(f, abs(y))
title('频谱图')

再问: 怎么把正弦信号分离啊,我提问的不是这个,谢谢。。。。。。谢谢。。。。
再答: 运行下面程序试试:下面程序我还不知道如何去掉随即噪声N=512;

Nfft=1024;

Fs=2*pi;

n=0:N-1;

x=sin(0.2*pi*n)+sin(0.4*pi*n)+sin(0.6*pi*n);%原方程去掉了randn(size(n))

X_f=fft(x);

y =fftshift(X_f); 

figure (1)

subplot(2,1,1);

plot(x);

xlabel('time')

title('原始时域')

subplot(2,1,2);

f=(0:length(y)-1)'*Fs/length(y);

plot(f,abs(y));

xlabel('frequency')

title('原始频率')

X1_f=y;

X1_f(90:450) = 0;

X2_f=y;

X2_f(1:90)=0;

X2_f(120:400)=0;

X2_f(450:end)=0;

X3_f=X_f;

X3_f(1:120)=0;

X3_f(400:end)=0;

x1_reconstruc = ifft(X1_f);

x2_reconstruc = ifft(X2_f);

x3_reconstruc = ifft(X3_f);

figure(2)

plot(real(x1_reconstruc));

title('sin(0.2*pi*n)')

figure(3)

plot(real(x2_reconstruc));

title('sin(0.4*pi*n)')

figure(4)

plot(real(x3_reconstruc));

title('sin(0.6*pi*n)')
再问: 可不可以设计个带通滤波器,把带的宽度设置小一点??我是个学机械的,选修了个现代信号处理,悲剧了。。。帮帮忙吧。。不胜感激。。
再答: 我也学机械的。不是很懂信号。