MATLAB的数字调制仿真实验报告
1:实验要求
实验要求通过输入随机信号的长度 ,得到二进制的随机原始信号 ,同时把得到的原始信号用三种不同的方法调制出来。
当分别输入各个控件名称时 ,得到原始信号相应的信号输出。
2:实验过程
2.1 实验条件
1:实验的原始信号由MATLAB的randint(n)函数输出 ,需要确定的只是n,就是原始信号的宽度。
2:三种不同的调制函数
原始信号调制信号函数
振幅调制: 0: 0
1: cos(t+pi/3)
频移调制: 0: cos(t+pi/3)
1: cos(2*t+pi/6)
相位移调制: 0: cos(t)
1: cos(t+pi)
时间t为单个信号存在的时间周期 ,为了将图形表达更加清晰 ,这里选择将其选定为2*pi ,并划分为100个具体的时间点,t=0:2*pi/99:2*pi。
2.2 实验步骤
1:首先我要得到原始信号的长度 ,可以通过对s=rindint(n)函数产生的随机矩阵信号用length(s)求取其长度。
2:我们要得到单个的输入原始信号并对其进行调制 ,并同时将其用矩阵进行收集储存 ,最后输出调制后的信号。
可以分别求取不同宽度上的信号 ,并将其赋值到对应输出原始信号的时间周期内 ,收集 ,最后输出。
3:调制得到的信号是在每个单个波长时间 ,不同的时间点t应用不同的调制函数的到的。
在进行信号调制时 ,需要对这些调制得到的信号信息进行储存。
可以在循环内采用矩阵叠加的方法来储存这些信号。
4: 需要的输入只是唯一的信号长度n,输出为得到的三种调制信号
5:编写实现输出全部调制信号的主函数Modulator和三个输出对应的调制信号的子函数ASK,FSK ,PSK.由子函数控制相应的信号输出.
6:编写程序,调试,写实验报告
3: 实验结果
通过输入不同Modulator(n) ,我们得到了调制的信号和相应的图形输出。
4: 附录实验程序及输出图
4.1: 主程序
function Modulator(n)
%定义函数
global ask
global fsk
global psk
global w
global signal
%定义全局变量
ask=[];
fsk=[];
psk=[];
%定义ASK,FSK,PSK调制信号
a=[];
f=[];
p=[];
%定义ASK,FSK,PSK决定信号
signal=[];
%定义输出原始信号和ASK选择信号
dfp=[];
%定义FSK,PSK选择信号
s=randint(n);
%得到原始信号
w=length(s);
%信号长度
t=0:2*pi/99:2*pi;
%划分单个信号的时间周期
for n=1:w
if s(n)==0;
signal1=zeros(1,100);
dfp1=ones(1,100);
f1=cos(t+pi/3);
p1=cos(t);
%产生并收集信号为0的时输出原始信号和调制信号的相应信息else
s(n)==1;
signal1=ones(1,100);
dfp1=ones(1,100);
f1=cos(2*t+pi/6);
p1=cos(t+pi);
%产生并收集信号为1时的输出原始信号和调制信号的相应信息end
signal=[signal signal1];
%得到输出原始信号信息和ASK调制的信号决定信息
a1=cos(t+pi/3);
a=[a a1];
%得到ASK调制的信号决定信息
f=[f f1];
%得到FSK调制的信号决定信息
p=[p p1];
%得到PSK调制的信号决定信息
dfp=[dfp dfp1];
%得到FSK,PSK调制的选择信息
end
%循环结束
ask=signal.*a;
fsk=dfp.*f;
psk=dfp.*p;
%得到ASK ,FSK ,PSK调制信号
ASK
FSK
PSK
%调用子函数
4.2:子函数
4.2.1:ASK调制程序
function ASK()
global ask
global w
global signal
figure(1)
subplot(2,1,1)
plot(signal,'LineWidth',1.5)
axis([0 100*w -1.5 1.5])
ylabel('调制前信号')
title('ASK信号调制图')
grid on
%画出输出原始信号图
subplot(2,1,2)
plot(ask,'LIneWidth',1.5)
axis([0 100*w -1.5 1.5])
xlabel('时间')
ylabel('2ASK调制后信号')
grid on
%画出输出ASK调制信号图
4.2.2: FSK调制程序
function FSK()
global fsk
global w
global signal
figure(2)
subplot(2,1,1)
plot(signal,'LIneWidth',1.5)
axis([0 100*w -1.5 1.5])
ylabel('调制前信号')
title('FSK信号调制图')
grid on
%画出输出原始信号图
subplot(2,1,2)
plot(fsk,'LIneWidth',1.5)
axis([0 100*w -1.5 1.5])
xlabel('时间')
ylabel('2FSK调制后信号')
grid on
%画出输出SFK调制信号图
4.2.3: PSK调制程序
function PSK()
global psk
global w
global signal
figure(3)
subplot(2,1,1)
plot(signal,'LIneWidth',1.5)
axis([0 100*w -1.5 1.5])
ylabel('调制前信号')
title('PSK信号调制图')
grid on
%画出输出信号原始图
subplot(2,1,2)
plot(psk,'LIneWidth',1.5)
axis([0 100*w -1.5 1.5])
xlabel('时间')
ylabel('2PSK调制后信号')
grid on
%画出输出PSK调制信号图。