使用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
i路q路分别传送信号的实部与虚部
再发一遍杨学志老师的推导,加深理解。上载波是只需要点乘exp(1i2pifct)即可,其中fc为载波频率,t为采样时间序列(例如:t= 0: 1/fs/99 : 1/fs ;)
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');