写一个matlab程序:msk生成数字基带信号
时间: 2023-08-04 15:10:44 浏览: 57
以下是一个简单的 Matlab 程序,用于生成数字基带信号的 MSK 调制信号。其中,我们假设我们要生成的数字序列为 [0 1 0 1 1],位时长为 Tb=1,载波频率为 fc=10 Hz,调制指数为 h=0.5:
```matlab
clear all; close all; clc;
% 定义信号参数
Tb = 1; % 位时长
fc = 10; % 载波频率
h = 0.5; % 调制指数
% 定义数字序列
data = [0 1 0 1 1];
% 生成时间序列
dt = 0.001; % 采样时间间隔
t = 0:dt:Tb*length(data);
% 生成数字基带信号
s = zeros(1,length(t));
for i = 1:length(data)
if data(i) == 0
s((i-1)*Tb/dt+1:i*Tb/dt) = -1;
else
s((i-1)*Tb/dt+1:i*Tb/dt) = 1;
end
end
% 生成 MSK 调制信号
m = zeros(1,length(t));
for i = 1:length(data)
if data(i) == 0
m((i-1)*Tb/dt+1:i*Tb/dt) = cos(2*pi*fc*t((i-1)*Tb/dt+1:i*Tb/dt) - pi*h/Tb);
else
m((i-1)*Tb/dt+1:i*Tb/dt) = cos(2*pi*fc*t((i-1)*Tb/dt+1:i*Tb/dt) + pi*h/Tb);
end
end
% 绘制数字基带信号和 MSK 调制信号
figure(1);
subplot(2,1,1);
plot(t,s);
title('数字基带信号');
xlabel('时间 (s)');
ylabel('幅度');
axis([0 t(end) -1.5 1.5]);
subplot(2,1,2);
plot(t,m);
title('MSK 调制信号');
xlabel('时间 (s)');
ylabel('幅度');
axis([0 t(end) -1.5 1.5]);
```
执行该程序,将会绘制出数字基带信号和 MSK 调制信号的波形图。