matlab中的仿真题,现代数字信号matlab处理仿真题

3.17

(1)相关函数

仿真代码:

A1=getAk(SNR1);

A2=getAk(SNR2);

A3=getAk(SNR3); %求得信号的幅度;

noise=randn(1,N) + j*randn(1,N); % 构建高斯白噪声;

s1=getSk(A1,f1,N);

s2=getSk(A2,f2,N);

s3=getSk(A3,f3,N);; %产生3个复正弦信号

vn=s1+s2+s3+noise;

vk=fft(vn,2*N); %对v(n)补N个零,然后做2N点FFT

swk=((abs(vk)).^2)/N; %计算功率谱估计S(ω)

r0=ifft(swk); %对S(k)做ifft得到

r=[r0(N+2 : 2*N) , r0(1 : N)]; %根据教程3.1.8式可得

r1=xcorr(vn, N-1,'biased'); %直接计算自相关函数%%%%%%%%%%%%%%%%%%%%%%%%%取序列实部,虚部%%%%%% real_r=real(r);

imag_r=imag(r);

real_r1=real(r1);

imag_r1 = imag(r1);

subplot(2,2,1);

stem(real_r);

xlabel('基于FFT的自相关函数的实部');

ylabel('实部');

subplot(2,2,2);

stem(imag_r);

xlabel('基于FFT的自相关函数的虚部');

ylabel('虚部');

subplot(2,2,3);

stem(real_r1);

ylabel('实部');

xlabel('估计的自相关函数的实部');

subplot(2,2,4);

stem(imag_r1);

xlabel('估计的自相关函数的虚实部');

ylabel('虚部');

function AK=getAk(SNR) %求得幅度%%%%%%%%%%%%%%%%%%%由SNR=10log(A^2/2*σ^2) %%%%%%% AK=((10^(SNR/10))*2)^0.5;

function Sk=getSk(Ak,fk,N)

Sk=Ak * exp(j * 2 * pi * fk *(0:N-1));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值