数字信号处理调制与解调MATLAB仿真

1 篇文章 0 订阅
1 篇文章 0 订阅

首先在命令行输入一个

edit math

作为头文件
然后在头文件math.h里面写上调制与解调函数,这里就不一一解释每行代码的意思,有问题可以评论区问。

%AM调制信号的MATLAB实现
dt=0.0001;      %时间采样频谱
fc=10;             %载波中心频率
T=5;                %信号时长
N=T/dt;           %采样点个数
t=[0:N-1]*dt;    %采样点的时间序列
wc=2*pi*fc;
 
mt=sqrt(2)*cos(2*pi*t);  %信源
subplot(421);
plot(t,mt);
title('基带调制信号');
axis([0 5 -4 4]);
line([0,5],[0,0],'color','r');
%mt的最大值是sqrt(2)
A=2;
subplot(422);
plot(t,A+mt);
title('调制信号');
axis([0 5 -4 4]);
line([0,5],[0,0],'color','b');
 
sam=(A+mt).*cos(wc*t);
subplot(423);
plot(t,sam);
hold on;    %画出AM信号波形
plot(t,A+mt,'r-');
title('AM调制信号及其包络 A=2');
line([0,5],[0,0],'color','k');
A=1;
sam=(A+mt).*cos(wc*t);
subplot(424);
plot(t,sam);
hold on;    %画出AM信号波形
plot(t,A+mt,'r-');
title('AM调制信号及其包络 A=1(混叠)');
line([0,5],[0,0],'color','k');
A=2;
sam=(A+mt).*cos(wc*t);
st = sam.*cos(wc*t);
subplot(425);
plot(t,st);
title('AM调制信号及其包络 A=1(混叠)');
line([0,5],[0,0],'color','k');
hold on;    %画出AM信号波形
[f,sf]=T2F(t,st);%傅里叶变换
[t,st]=lpf(f,sf,2 * fm);%低通滤波
subplot(426)
plot(t,st);
title('经过低通滤波的相干解调信号波形');
axis([0 4 -4 4]);
line([0,4],[0,0],'color','k');

然后在命令行重新输入

edit 

后面不用跟名称然后输入

  • 子程序T2T
function [f,sf]= T2F(t,st)
% dt = t(2)-t(1);
T=t(end);
df = 1/T;
N = length(st);
f=-N/2*df : df : N/2 * df-df;
sf = fft(st);
sf = T/N * fftshift(sf);

重复操作 命令行输入edit

  • 子程序F2T
function[t,st]=F2T(f,Sf)
df=f(2)-f(1);
fmax=(f(end)-f(1)+df);
dt=1/fmax;
N=length(f);
t=[0:N-1] * dt;
Sf=fftshift(Sf);
st=fmax * ifft(Sf);
st=real(st);

-重复操作 命令行输入edit

  • 子程序lpm
function[t,st]=lpf(f,sf,B)
df=f(2)-f(1);
fN=length(f);
ym=zeros(1,fN);
xm=floor(B/df);
xm_shift=[-xm:xm-1]+floor(fN/2);
ym(xm_shift)=1;
yf=ym.* sf;
[t,st]=F2T(f,yf);

最后运行就能实现效果在这里插入图片描述

  • 1
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
2ASK信号调制解调可以使用Matlab进行仿真调制过程中,首先需要生成载波信号和基带信号。载波信号可以使用cos函数生成,基带信号可以是要传输的信息信号调制过程中可以使用4个方程来生成2ASK调制信号: 1. 对于基带信号中的1,调制信号可以表示为调制幅度加上载波信号:s1(t) = A*cos(2*pi*f_c*t) 2. 对于基带信号中的0,调制信号可以表示为负的调制幅度加上载波信号:s0(t) = -A*cos(2*pi*f_c*t) 在Matlab中,我们可以使用for循环来生成2ASK调制信号的离散样本。假设fs是采样频率,T是每个样本的周期,则可以使用以下代码生成2ASK调制信号: ``` t = 0:1/fs:T; s = zeros(size(t)); for i = 1:length(baseband_signal) if baseband_signal(i) == 1 s(i) = A * cos(2*pi*f_c*t(i)); else s(i) = -A * cos(2*pi*f_c*t(i)); end end ``` 其中,baseband_signal是基带信号的序列。 解调过程中,可以使用相关法进行解调。相关法的原理是将接收到的调制信号与已知的同样调制方式的参考信号进行相关运算,从而得到基带信号。 在Matlab中,我们可以使用相关函数corrcoef来实现相关运算。假设接收到的调制信号为received_signal,参考信号为reference_signal,则可以使用以下代码进行解调: ``` [r, lag] = xcorr(received_signal, reference_signal); [~, idx] = max(abs(r)); decoded_signal = received_signal(lag(idx)+1:end); ``` 其中,decoded_signal就是解调后得到的基带信号。 以上就是2ASK信号调制解调Matlab仿真过程,通过这些仿真可以更好地理解2ASK调制解调过程的原理以及信号的特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值