视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
通信原理Matlab仿真实验报告
2025-10-03 14:36:12 责编:小OO
文档
  

 通信原理Matlab仿真

实验报告

学号:                  

姓名:                  

实验一

1、利用Matlab实现矩形信号串信号分解与合成

Matlab程序代码:

矩形信号串信号分解与合成函数rectexpd():

function rectexpd(T1,T0,m)

%矩形信号串信号分解与合成

%T1:矩信号区间为(-T1/2,T1/2)

%T0:矩形矩信信号串周期

%m:傅里叶级数展开项次数

t1=-T1/2:0.01:T1/2;t2=T1/2:0.01:(T0-T1/2);

t=[(t1-T0)';(t2-T0)';t1';t2';(t1+T0)'];

n1=length(t1);n2=length(t2); %根据周期矩形信号函数周期,计算点数

f=[ones(n1,1);zeros(n2,1);ones(n1,1);zeros(n2,1);ones(n1,1)];  %构造周期矩形信号串

y=zeros(m+1,length(t));y(m+1,:)=f';

figure(1);

plot(t,y(m+1,:)); %绘制周期矩形信号串

axis([-(T0+T1/2)-0.5,(T0+T1/2)+0.5,0,1.2]);

set(gca,'XTick',[-T0,-T1/2,T1/2,T0]);

set(gca,'XTickLabel',{'-T0','-T1/2','T1/2','T0'});

title('矩形信号串');grid on;

a=T1/T0;

pause; %绘制离散幅度谱

freq=[-20:1:20];mag=abs(a*sinc(a*freq));

stem(freq,mag);

x=a*ones(size(t));

for k=1:m %循环显示谐波叠加图形

pause;

x=x+2*a*sinc(a*k)*cos(2*pi*t*k/T0);

y(k,:)=x;

plot(t,y(m+1,:));hold on;

plot(t,y(k,:));hold off;grid on;

axis([-(T0+T1/2)-0.5,[T0+T1/2]+0.5,-0.5,1.5]);

title(strcat(num2str(k),'次谐波叠加'));

xlabel('t');end

pause;

plot(t,y(1:m+1,:));grid on;

axis([-T0/2,T0/2,-0.5,1.5]);

title('各次谐波叠加');xlabel('t');

在命令窗口调用rectexpd()函数:

T1=5;

T0=10;

m=5;

rectexpd(T1,T0,m)

Matlab仿真结果:

2、利用Matlab实现连续信号卷积运算

Matlab程序代码:

连续信号卷积运算的通用函数sconv():

function [f,k]=sconv(f1,f2,k1,k2,p)

f=conv(f1,f2);f=f*p;

k0=k1(1)+k2(1);

k3=length(f1)+length(f2)-2;

k=k0:p:k3*p;

subplot(2,2,1);

plot(k1,f1);

title('f1(t)');

xlabel('t');

ylabel('f1(t)');

subplot(2,2,2);

plot(k2,f2);title('f2(t)');

xlabel('t');

ylabel('f2(t)');

subplot(2,2,3);

plot(k,f);

title('f(t)=f1(t)*f2(t)');

xlabel('t');

ylabel('f(t)');

h=get(gca,'position');

h(3)=2.5*h(3);

set(gca,'position',h);

在命令窗口调用sconv()函数:

p=0.01;

k1=0:p:2;

f1=exp(-k1);

k2=0:p:3;

f2=ones(1,length(k2));

[f,k]=sconv(f1,f2,k1,k2,p)

Matlab仿真结果:

实验二

1、用Matlab模拟图形A律解码

Matlab程序代码:

建立函数ADecode()

function y=ADecode(code,n)

codesize=size(code);

cr_len=codesize(1);

cl_len=codesize(2);

ca=zeros(1,cl_len-1);

for i=1:cr_len

end

y=y/(2^(n-1));

A=87.6;

A1=1+log(A);

for j=1:length(y)

end

建立函数APCM()

function  code=APCM(x,n)

xmax=max(abs(x));

x=x/xmax;

xlen=length(x);

y=zeros(1,xlen);

A=87.6;

A1=1+log(A);

for i=1:xlen

y(i)=(A*x(i))/A1;

y(i)=-(A*x1)/A1;

end

y1=y*(2^(n-1)-1);

y1=round(y1);

code=zeros(length(y1),n);

c2=zeros(1,n-1);

for i=1:length(y1)

y1(i)=(y1(i)-r)/2;

c2=fliplr(c2);

code(i,:)=[c1 c2];

end

在新函数中调用前两个函数

t=0:0.01:1;

x=sin(2*pi*t);

code=APCM(x,7);

y=ADecode(code,7);

subplot(2,1,1)

plot(t,x);

title('原函数的图形');

subplot(2,1,2)

plot(t,y);

title('解码后函数的图形');

Matlab仿真结果:

2、用Matlab模拟DSB调制及解调过程

Matlab程序代码:

close all;

clear all;

dt=0.001;%采样时间间隔

fm=1; %信源最高频率

fc=10; %载波中心频率

N=4096;

T=N*dt;

t=0:dt:T-dt;

mt=sqrt(2)*cos(2*pi*fm*t);%信源

s_dsb=mt.*cos(2*pi*fc*t); %DSB-SC双边带抑制载波调幅

B=2*fm;

figure(1);

subplot(311)

plot(t,s_dsb,'b-');

hold on; %画出DSB信号波形

plot(t,mt,'r--');%画出m(t)信号波形

title('DSB调制信号');

xlabel('t');

grid on;

%DSB demodulation

rt=s_dsb.*cos(2*pi*fc*t);

rt=rt-mean(rt);

[f,rf]=T2F(t,rt);

[t,rt]=lpf(f,rf,B);

subplot(312)

plot(t,rt,'k-');

hold on;

plot(t,mt/2,'r--');

title('相干解调后的信号波形与输入信号的比较');

xlabel('t');

grid on;

subplot(313)

[f,sf]=T2F(t,s_dsb); %求调制信号的频谱

psf=(abs(sf).^2)/T; %求调制信号的功率谱密度

plot(f,psf);

axis([-2*fc 2*fc 0 max(psf)]);

title('DSB信号功率谱');

xlabel('f');

grid on;

Matlab仿真结果:

实验三

1、用Matlab模拟双极性归零码

Matlab程序代码:

function y=drz(x)

t0=300;

x=[1 0 0 1 1 0 0 0 0 1 0 1];

t=0:1/t0:length(x);

for i=1:length(x);

end

y=[y,x(i)];M=max(y);m=min(y);

subplot(211)

plot(t,y);grid on;

axis([0,i,m-0.1,M+0.1]);

title('1 0 0 1 1 0 0 0 0 1 0 1 ');

Matlab仿真结果:

2、用Matlab产生2FSK信号

Matlab程序代码:

建立函数fskdigital()

function fskdigital(s,f1,f2)

t=0:2*pi/99:2*pi;

m1=[];c1=[];b1=[];

for n=1:length(s)

end

fsk=c1.*m1;

subplot(211);

plot(b1,'r')title('原始信号');

axis([0 100*length(s) -0.1 1.1]);

grid on;

subplot(212);

plot(fsk)title('2FSK信号');

grid on;

在命令窗口调用函数fskdigital()

>> s=[1 0 1 1 0 0 1 0];

f1=200;

f2=100;

fskdigital(s,f1,f2)

Matlab仿真结果:

3、用Matlab的simulink模块模拟三角波的分解与还原

模块图

仿真结果:

 

 三角波原图

用矩形波近似的冲击函数

分解后的三角波

经低通还原的三角波下载本文

显示全文
专题