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

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

  • 关于matlab中的xxxmod函数
  • 频偏
  • iq信号
  • 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画图

  • Matlab画图常用的符号和颜色
    https://blog.csdn.net/sinat_21026543/article/details/80215281
    ‘-’ 实线
    '–'双划线
    ‘:’虚线

  • Matlab矩阵复制扩充
    https://blog.csdn.net/yangguangqizhi/article/details/52790798
    repmat( A , m , n ):将向量/矩阵在垂直方向复制m次,在水平方向复制n次。
    在做符号与载波点乘的时候很有用,可以实现对符号序列的扩展。

问题

发现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');

基带与载波调制的有关思考+部分matlab画图_第1张图片
基带与载波调制的有关思考+部分matlab画图_第2张图片
其实这里漏掉了一步:应该在基带符号映射后加根升余弦滤波器进行信号成形!以后我会后续讲这部分内容。

你可能感兴趣的:(通信)