永发信息网

MATLAB中信号处理

答案:1  悬赏:80  手机版
解决时间 2021-04-11 10:20
  • 提问者网友:低吟詩仙的傷
  • 2021-04-10 14:29

这是个实验课上的,调不出来,失望各位帮帮忙,看看!

程序:

%信道失真示意,
clear all;
close all;
Ts=1;
N_sample=8; %每个码元的抽样点数
dt=Ts/N_sample; %抽样时间间隔
N=1000; %码元数
t=0:dt:(N*N_sample-1)*dt;

gt1=ones(1,N_sample); %NRZ非归零波形
gt2=ones(1,N_sample/2); %RZ归零波形
gt3=[gt2 zeros(1,N_sample/2)];

mt3=sinc((t-5)/Ts); %sin(pi*t/Ts)/(pi*t/Ts)波形,截段10个码元
gt3=mt3(1:10*N_sample);

d=(sign(randn(1,N))+1)/2;
data=sigexpand(d,N_sample); %对序列间隔插入N_sample-1个0

st1=conv(data,gt1);
st2=conv(data,gt2);
d=2*d-1; %变成双极性序列
data=sigexpand(d,N_sample);
st3=conv(data,gt3);

xt=st1;
%无失真信道
[f,xf]=T2F(t,xt);
hf1=exp(-j*pi*f);
yf1=xf.*hf1;
[t1,yt1]=F2T[f,yf1];

%幅频失真信道
ht2=sinc(f).*exp(-j*pi*f);
yf2=xf.*hf2;
[t2,yt2]=F2T(t,yt2);
%相频失真、群时延无失真信道
%hf3=exp(j*pi*f+j*0.1*pi);
f1=find(f<0);

hf3=exp(-j*pi*f+j*pi);
hf3(f1)=exp(-j*pi*f(f1)-j*pi);

yf3=xf.*hf3;
[t3,yt3]=F2T(f,yf3);
%相频、群时延失真信道
hf4=exp(-j*pi*f-j*pi*f+j*pi);
yf4=xf.*hf4;
[t4,yt4]=F2T(f,yf4);s

figure(1)
subplot(221)
plotyy(t,abs(hf1),f,angle(hf1)/pi);ylabel('幅频、相频特性');
title('线性无失真信道');grid on;
subplot(222)
plot(t1,real(yt1));title('经过信道后的输出信号');
axis([0,20,-1.2 1.2]);grid on;

subplot(223)
plotyy(f,abs(hf2),f,angle(hf2)/pi);ylabel('幅频、相频特性');
title('幅频失真信道');grid on;xlabel('f')

subplot(224)
plot(t2,real(yt2));
axis([0,20,-1.2 1.2]);grid on;xlabel('t');

figure(2)
subplot(221);
plotyy(f,abs(hf3),f,angle(hf3)/pi);ylabel('幅频相频特性');
title('相频失真、群时延无失真信道');grid on;
subplot(222);
plot(t3,real(yt3));title('经过信道后的输出信号');
axis([0,20,-1.2 1.2]);grid on;

subplot(223)
plotyy(f,abs(hf4),angle(hf4)/pi);ylabel('幅频、相频特性');
title('相频失真、群时延失真信道');grid on;xlabel('f');
subplot(224);
plot(t4,real(yt4));
axis([0,20,-1.2 1.2]);grid on;xlabel('t');

最佳答案
  • 五星知识达人网友:摆渡翁
  • 2021-04-10 14:50
clear
clc
Ts=1;
N_sample=8; %每个码元的抽样点数
dt=Ts/N_sample; %抽样时间间隔
N=1000; %码元数
t=0:dt:(N*N_sample-1)*dt;

gt1=ones(1,N_sample); %NRZ非归零波形
gt2=ones(1,N_sample/2); %RZ归零波形
gt3=[gt2 zeros(1,N_sample/2)];

mt3=sinc((t-5)/Ts); %sin(pi*t/Ts)/(pi*t/Ts)波形,截段10个码元
gt3=mt3(1:10*N_sample);

d=(sign(randn(1,N))+1)/2;
data=sigexpand(d,N_sample); %对序列间隔插入N_sample-1个0

我改到这就不能改了,没有sigexpand这个函数,我用的是R2009B
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯