基带与载波调制的有关思考+部分matlab画图

基带与载波调制的有关思考+部分matlab画图


最近在做调制信号的模拟,在与现有数据集的对比下发现了很多问题,暴露出自己通信知识的匮乏,切记学以致用。
https://blog.csdn.net/hungry_bug/article/details/49914385
这篇问答文章很有用。

关于matlab中的xxxmod函数

使用pskmod、qammod、mskmod等函数时非常蒙圈,输出的是符号映射,而且并不需要输入采样率(fskmod除外),后来看到这篇文章豁然开朗:
https://www.ilovematlab.cn/thread-84390-1-1.html
A:
设载波为carrier = exp(jwct)
modem.psk输出结果为y
则调制为sig = real(y.*carrier);

y实际上为复包络
y = real(y) + j*imag(y);
I路为real(y)
Q路为imag(y)

real(y)cos(wct)-imag(y)sin(wct) = real(y.*carrier);
两者等价

原来只是进行了对信号的基带调制,相当于用函数做了一个符号映射,并没有上载波!!

频偏

https://www.ilovematlab.cn/thread-543333-1-1.html

iq信号

i路q路分别传送信号的实部与虚部
再发一遍杨学志老师的推导,加深理解。上载波是只需要点乘exp(1i2pifct)即可,其中fc为载波频率,t为采样时间序列(例如:t= 0: 1/fs/99 : 1/fs ;)
在这里插入图片描述

matlab画图

问题

发现radioml数据内class并没有与序号对应,(am信号的iq谱实际上是 fm的iq谱)
应该学习:
传统信号识别方法(高阶矩?)
调制信号fft

有错误请不吝指出!

代码

通过代码,加深了对载波、采样率、调制等的理解。

%功能:生成bpsk调制信号

%生成两张图片,分别是带fc和不带fc的码序列、调制后信号、fft
%感觉还是带载波时fft才会出现两个尖,且调制后才会出现成形波形。
clear all; 
close all;
clc;
%% 载波为fc
max=20; %信源
%g=zeros(1,max);
 g=randi([0 1],1,max);     %长度为max的随机二进制序列
cp=[];
mod1=[];
f=2*pi;                    
fc=900;                  %载波频率
fs=900;                  %采样率
 
 %0-2pi 保证范围是一个三角函数的周期2*pi
t=0:1/fs/99:1/fs;
Sp=length(t);                    
cm=[];mod=[];
%%
%A 作用:展示原始码序列
%B 作用:为了与载波信号点乘所作的扩展
%c 作用:载波信号
%tiaoz 作用:已调信号
for n=1:length(g);
    if g(n)==0; 
        A=zeros(1,Sp);
        B=ones(1,Sp);      %这里的ones是为了点乘一致
        c=cos(f*t*fc);            %载波信号
    else g(n)==1;
        A=ones(1,Sp);  
        B=ones(1,Sp); 
        c=cos(f*t*fc+pi);      %载波信号
    end
    cp=[cp A];
    cm=[cm B];              %s(t)码元宽度
    mod=[mod c];          %与s(t)等长的载波信号
end
tiaoz=cm.*mod;          %e(t)调制
%%

subplot(3,1,1);plot(cp,'LineWidth',1.5);grid on;
title('Binary Signal');
axis([0 Sp*length(g) -2.5 2.5]);
 
subplot(3,1,2);
plot(tiaoz,'LineWidth',1.5);grid on;
title('PSK modulation with fc');
axis([0 Sp*length(g) -2.5 2.5]); 

subplot(3,1,3);
plot(fftshift(abs(fft(tiaoz))),'LineWidth',1.5);grid on;
title('PSK fft with fc');

%% 载波为0 fc=0
fc=0;
cp=[];cm=[];mod=[];
for n=1:length(g);
    if g(n)==0; 
        A=zeros(1,Sp);
        B=ones(1,Sp);      %这里的ones是为了点乘一致
        c=cos(f*t*fc);            %载波信号
    else g(n)==1;
        A=ones(1,Sp);  
        B=ones(1,Sp); 
        c=cos(f*t*fc+pi);      %载波信号
    end
    cp=[cp A];
    cm=[cm B];              %s(t)码元宽度
    mod=[mod c];          %与s(t)等长的载波信号
end
tiaoz=cm.*mod;

figure(2)
subplot(3,1,1);plot(cp,'LineWidth',1.5);grid on;
title('Binary Signal');
axis([0 Sp*length(g) -2.5 2.5]);
 
subplot(3,1,2);
plot(tiaoz,'LineWidth',1.5);grid on;
title('PSK modulation without fc');
axis([0 Sp*length(g) -2.5 2.5]); 

subplot(3,1,3);
plot(fftshift(abs(fft(tiaoz))),'LineWidth',1.5);grid on;
title('PSK fft without fc');

在这里插入图片描述
在这里插入图片描述
其实这里漏掉了一步:应该在基带符号映射后加根升余弦滤波器进行信号成形!以后我会后续讲这部分内容。

(1) SSB信号表达式: 上边带调制信号:s(t) = m(t)cos(2Πfct) - j * h(t)sin(2Πfct) 下边带调制信号:s(t) = m(t)cos(2Πfct) + j * h(t)sin(2Πfct) 其中,h(t)为带通滤波器的输出,fct为载波频率,j为虚数单位。 Matlab代码实现: ```matlab % 基带信号 t = 0:0.0001:0.1; m = sin(10*pi*t) + sin(30*pi*t); figure(1); subplot(3,1,1);plot(t,m);title('基带信号时域波形'); xlabel('时间/s');ylabel('幅度'); % 上边带调制 fct = 2000; c = cos(2*pi*fct*t); susb = m .* c - imag(hilbert(m)) .* sin(2*pi*fct*t); subplot(3,1,2);plot(t,susb);title('上边带调制信号时域波形'); xlabel('时间/s');ylabel('幅度'); % 下边带调制 sdsb = m .* c + imag(hilbert(m)) .* sin(2*pi*fct*t); subplot(3,1,3);plot(t,sdsb);title('下边带调制信号时域波形'); xlabel('时间/s');ylabel('幅度'); % 幅度频谱图 figure(2); subplot(3,1,1);plot(abs(fft(m)));title('基带信号幅度频谱图'); xlabel('频率/Hz');ylabel('幅度'); subplot(3,1,2);plot(abs(fft(susb)));title('上边带调制信号幅度频谱图'); xlabel('频率/Hz');ylabel('幅度'); subplot(3,1,3);plot(abs(fft(sdsb)));title('下边带调制信号幅度频谱图'); xlabel('频率/Hz');ylabel('幅度'); ``` (2) 相干解调: 相干解调的原理是将调制信号与相同频率、同相的载波相乘,再经过低通滤波器滤除高频分量,得到原始基带信号。 Matlab代码实现: ```matlab % 相干解调 susb_demod = susb .* cos(2*pi*fct*t); sdsb_demod = sdsb .* cos(2*pi*fct*t); % 低通滤波 [b,a] = butter(6, 2*50*0.0001); % 50Hz的带宽 m_susb = filter(b, a, susb_demod); m_sdsb = filter(b, a, sdsb_demod); % 画图 figure(3); subplot(2,1,1);plot(t,m_susb);title('上边带调制信号相干解调后的波形'); xlabel('时间/s');ylabel('幅度'); subplot(2,1,2);plot(t,m_sdsb);title('下边带调制信号相干解调后的波形'); xlabel('时间/s');ylabel('幅度'); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值