欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于matlab的短波通信信号基本样式(AM、DSB、FM、2ASK、2FSK、2PSK)

程序员文章站 2022-07-02 21:12:52
...

标题基于matlab的短波通信信号基本样式(AM、DSB、FM、2ASK、2FSK、2PSK)

最近学校老师布置的通信信号的仿真任务,本来仿真一个普通信号并不是一件难事,但是老师要求按照实际的频段来仿真,因此,我做的是3-30MHz的信号。编程小白一个,发现网上仿真信号的频率都比较小,将其调到高频后会有一些不好操作的地方,所以就在网上找了一阵子,然后将短波频段的仿真信号做出来了,跟大家分享一下。因为在网上找了许久,所以可能会无意识的引用到其他博主的代码,如果代码涉及到这类事情,望大家告知,我立马撤除。

PS:本人编程小白一个,尤其是遇到信号处理这一块内容,头都炸了,我也是第一次写文章,写这篇文章的目的就是想着各位大神看过之后能够指点一二,我跟大家学习学习,先谢过大家了!

AM信号

f_am = 20e+06;              %载波频率为20MHz
f_am_t = 1e+06;             %调制信号频率为1MHz
fs = 4*f_am;                %采样频率
Tr_am = 40e-6;              %信号脉冲持续时间
t = 0:1/fs:2*Tr_am-1/fs;    %采样时间
N = length(t);              %采样点数
df = fs/N;                  %一个采样点对应的采样频率
n = -N/2:1:N/2-1;           %频率的横轴数值
f = n*df*2;
A0_am = 1.5;                %直流偏量幅度
At_am = sin(pi*f_am_t*t);                          %调制信号
y_am = A0_am*cos(pi*f_am*t)+At_am.*cos(pi*f_am*t);    %调幅信号表达式
fy_am = abs(fftshift(fft(y_am)));                        %将信号转化到频域
fy_am_p = 10*log10(fy_am);

subplot(2,1,1)
plot(t/1e3,y_am);
title('AM信号时域波形图');
xlabel('时间(ms)')
ylabel('幅度')
grid on

subplot(2,1,2)
plot(f/1e6,fy_am_p)
title('AM信号频域图')
xlabel('频率(MHz)')
ylabel('功率(dB)')
grid on

基于matlab的短波通信信号基本样式(AM、DSB、FM、2ASK、2FSK、2PSK)

DSB信号

f_dsb = 20e+06;              %载波频率为20MHz
f_dsb_t = 0.5e+06;           %调制信号频率为0.5MHz
fs = 4*f_dsb;                %采样频率
Tr_dsb = 40e-6;              %信号脉冲持续时间
t = 0:1/fs:2*Tr_dsb-1/fs;    %采样时间
N = length(t);               %采样点数
df = fs/N;                   %一个采样点对应的采样频率
n = -N/2:1:N/2-1;            %频率的横轴数值
f = n*df*2;
At_dsb = sin(pi*f_dsb_t*t);             %调制信号
y_dsb = At_dsb.*cos(pi*f_dsb*t);        %调幅信号表达式
fy_dsb = abs(fftshift(fft(y_dsb)));     %将信号转化到频域
fy_dsb_p = 10*log10(fy_dsb);

figure
subplot(2,1,1)
plot(t/1e3,y_dsb);
title('DSB信号时域波形图');
xlabel('时间(ms)')
ylabel('幅度')
grid on

subplot(2,1,2)
plot(f/1e6,fy_dsb_p)
title('DSB信号频域图')
xlabel('频率(MHz)')
ylabel('功率(dB)')
grid on

基于matlab的短波通信信号基本样式(AM、DSB、FM、2ASK、2FSK、2PSK)

FM信号

fc_fm = 10e+06;                %载波频率
fm_fm = 1e+06;                 %调制频率
fs_fm = 4*fc_fm;               %采样率
Tr_fm = 20e-06;                %信号脉冲持续时间
mf = 20;                       %调幅指数
t = 0:1/fs_fm:2*Tr_fm-1/fs_fm;
N = length(t);
df = fs_fm/N;
n = -N/2:1:N/2-1;
f = n*df;
m = sin(2*pi*fm_fm*t);                                     %调制信号
y_fm = cos(2*pi*fc_fm*t+2*pi*mf*1/fs_fm*cumsum(m));        %已调信号
fy_fm_p = 10*log10(abs(fftshift(fft(y_fm))));              %已调信号频域

figure
subplot(2,1,1)
plot(t/1e+03,y_fm)
title('FM信号时域波形图')
xlabel('时间(ms)')
ylabel('幅度')
grid on

subplot(2,1,2)
plot(f/1e+06,fy_fm_p)
title('FM信号的频域图')
xlabel('频率(MHz)')
ylabel('功率(dB)')
grid on

基于matlab的短波通信信号基本样式(AM、DSB、FM、2ASK、2FSK、2PSK)

ASK信号

fc_ask = 20e+06;                   %载波频率
fs_ask = 4*fc_ask;                 %采样率
Tr_ask = 20e-06;                   %信号脉冲持续时间
t = 0:1/fs_ask:Tr_ask-1/fs_ask; 
s = round(rand(1,16));             %0-1调制码
for i=1:length(s)
    if s(i)==1
        xn((i-1)*100+1:i*100) = ones(1,100);
    else
        xn((i-1)*100+1:i*100) = zeros(1,100);
    end
end
y_ask_1 = sin(2*pi*fc_ask*t);
y_ask = xn.*y_ask_1;

figure
plot(t*1e+03,y_ask)
title('2ASK信号时域波形')
xlabel('时间(ms)')
ylabel('幅度')
grid on

基于matlab的短波通信信号基本样式(AM、DSB、FM、2ASK、2FSK、2PSK)

2FSK信号

fc_fsk_1 = 10e+06;                 %频率1
fc_fsk_2 = 5e+06;                  %频率2
fs_fsk = 4*fc_fsk_1;               
Tr_fsk = 40e-06;
t = 0:1/fs_fsk:Tr_fsk-1/fs_fsk;
s = round(rand(1,16));
for i=1:length(s)
    if s(i)==1
        xn1((i-1)*100+1:i*100) = ones(1,100);
        xn2((i-1)*100+1:i*100) = zeros(1,100);
    else
        xn1((i-1)*100+1:i*100) = zeros(1,100);
        xn2((i-1)*100+1:i*100) = ones(1,100);
    end
end
y_fsk_1 = xn1.*sin(2*pi*fc_fsk_1*t);
y_fsk_2 = xn2.*sin(2*pi*fc_fsk_2*t);
y_fsk = y_fsk_1+y_fsk_2;

figure
plot(t*1e+03,y_fsk)
title('2FSK信号时域波形')
xlabel('时间(ms)')
ylabel('幅度')

基于matlab的短波通信信号基本样式(AM、DSB、FM、2ASK、2FSK、2PSK)

2PSK信号

fc_psk = 20e+06;                   %载波频率
fs_psk = 4*fc_psk;                 %采样率
Tr_psk = 20e-06;                   %信号脉冲持续时间
t = 0:1/fs_psk:Tr_psk-1/fs_psk; 
s = round(rand(1,16));             %0-1调制码
for i=1:length(s)
    if s(i)==1
        xn((i-1)*100+1:i*100) = ones(1,100);
    else
        xn((i-1)*100+1:i*100) = -ones(1,100);
    end
end
y_psk_1 = sin(2*pi*fc_psk*t);
y_psk = xn.*y_psk_1;

figure
plot(t*1e+03,y_psk)
title('2PSK信号时域波形')
xlabel('时间(ms)')
ylabel('幅度')
grid on

基于matlab的短波通信信号基本样式(AM、DSB、FM、2ASK、2FSK、2PSK)