系列文章目录
前言
本文承接前文,对常见的通信信号类型进行简单的仿真。
一、通信信号源仿真
1.1 振幅键控信号(ASK)
振幅键控:编码信号对射频(载频)信号的幅度进行调制。以二进制振幅键控方式为例,表达式为:
代码:
%% 信号参数及生成对应调制信号
dA = 2; % 频率间隔
M = 2; % FSK阶次
A = dA*(0:M-1);
rate = 2e5;
T = 0.0001;
fs = 12e6;
t = 0:1/fs:T;
[C,rt] = ask_producing(A,t,rate); % 随机生成码片
f0 = 7.2445e9;
rt = rt.*exp(1j*2*pi*f0*t);
%% 下变频到基带信号
fm = 2e6;
fc = f0-fm;
rt = rt.*exp(-1j*2*pi*fc*t);
%% 波形
figure;
plot(t,C+1);
title('码元');
hold on;
axis off;
plot(t,real(rt));
title('调制信号时域波形');
legend('码元','波形');
function [C,rt] = ask_producing(A,t,rate)
%
% 产生对应长度码片
M = length(A);
C_Length = ceil((max(t)-min(t))*rate)+1;
C = int8(randn(M-1,C_Length)>0);
if M>2
C = sum(C);
end
C = C+1;
n = floor((t-min(t))*rate+1);
C = C(n);
rt = zeros(1,length(t));
for i=1:M
ri = (C==i);
ri = A(i)*ri*exp(1j*pi/4);
rt = rt+ri;
end
end
仿真结果
1.2 频移键控信号(FSK)
频移键控:编码信号对射频(载频)信号的频率进行调制。
代码:
%% 信号参数及生成对应调制信号
df = 1e6; % 频率间隔
M = 2; % FSK阶次
f = df*(1:M);
rate = 2e5;
T = 0.0001;
fs = 12e6;
t = 0:1/fs:T;
[C,rt] = fsk_producing(f,t,rate); % 随机生成码片
f0 = 7.2445e9;
rt = rt.*exp(1j*2*pi*f0*t);
%% 下变频到基带信号
fc = f0;
rt = rt.*exp(-1j*2*pi*fc*t);
%% 波形
figure;
plot(t,C);
title('码元');
hold on;
axis off;
plot(t,real(rt));
title('调制信号时域波形');
legend('码元','波形');
function [C,rt] = fsk_producing(f,t,rate)
%
% 产生对应长度码片
M = length(f);
C_Length = ceil((max(t)-min(t))*rate)+1;
C = int8(randn(M-1,C_Length)>0);
if M>2
C = sum(C);
end
C = C+1;
n = floor((t-min(t))*rate+1);
C = C(n);
rt = zeros(1,length(t));
for i=1:M
ri = (C==i);
ri = ri.*exp(1j*2*pi*f(i)*t)*exp(1j*pi/4);
rt = rt+ri;
end
end
仿真结果:
1.3 相移键控信号(PSK)
相移键控:编码信号对射频(载频)信号的相位进行调制。
式中表示第n个码元的绝对相位,发送码元为1时为;发送码元为0时为0。
代码
%% 信号参数及生成对应调制信号
M = 2; % PSK阶次
rate = 1e5;
T = 0.0005;
fs = 12e6;
t = 0:1/fs:T;
code = psk_producing(M,t,rate); % 随机生成码片
f0 = 7.2445e9;
rt = code.*exp(1j*2*pi*f0*t);
%% 下变频到中频
fm = 1e5;
fc = f0-fm;
rt = rt.*exp(-1j*2*pi*fc*t);
%% 波形
figure;
plot(t,angle(code)/pi+2);
title('码元');
hold on;
axis off;
plot(t,real(rt));
title('调制信号时域波形');
legend('码元','波形');
function rt = psk_producing(M,t,rate)
%
% 产生M调制码元
if M>1
phi = pi/4; %码元初相
Code = 0:2*pi/M:2*pi;
Code = exp(1j*Code)*exp(1j*phi);
Code = Code(1:M);
% 产生对应长度码片
C_Length = ceil((max(t)-min(t))*rate)+1;
C = int8(randn(M-1,C_Length)>0);
if M>2
C = sum(C);
end
C = C+1;
rt = Code(C);
% 产生与接收时间对应的码片
n = floor((t-min(t))*rate+1);
rt = rt(n);
else
rt = ones(1,length(t));
end
end
仿真结果:
总结
本文对常见的通信信号进行了简单的仿真,后续会根据研究进展进行补充。 转载请附链接【杨(_> <_)】的博客_CSDN博客-信号处理,SAR,代码实现领域博主