画出OOK信号波形和功率谱
时间: 2023-07-28 18:08:17 浏览: 517
绘制波形图
OOK(On-Off Keying)是一种调制方式,可以将数字信号调制成一串二进制序列。其基本原理是将数字信号的高低电平分别对应到载波的存在与否,即将数字信号的1与载波相乘,数字信号的0则不乘载波。下面是Matlab代码示例,用于画出OOK信号的波形和功率谱:
```matlab
% 设置采样率和采样时长
fs = 1000; % 采样率
T = 1; % 采样时长
t = 0:1/fs:T-1/fs; % 时间序列
% 生成数字信号
data = [1 0 1 1 0 1 0 0 1 0]; % 数字信号
bit_duration = 0.1; % 每个比特的持续时间
num_samples_per_bit = fs*bit_duration; % 每个比特的采样点数
num_bits = length(data); % 数字信号的比特数
samples_per_symbol = num_samples_per_bit; % 每个符号的采样点数
num_symbols = num_bits; % 符号数
symbols = data; % 符号序列
% 生成载波信号
carrier_freq = 50; % 载波频率
carrier_amplitude = 1; % 载波幅度
carrier_signal = carrier_amplitude*cos(2*pi*carrier_freq*t); % 载波信号
% 生成OOK调制信号
modulated_signal = zeros(1, length(t)); % 初始化OOK调制信号
for i=1:num_symbols
if symbols(i) == 1
modulated_signal((i-1)*samples_per_symbol+1:i*samples_per_symbol) = symbols(i)*carrier_signal((i-1)*samples_per_symbol+1:i*samples_per_symbol);
else
modulated_signal((i-1)*samples_per_symbol+1:i*samples_per_symbol) = 0;
end
end
% 画出OOK信号波形
subplot(2,1,1);
plot(t, modulated_signal);
xlim([0 T]);
ylim([-1.5 1.5]);
xlabel('Time (s)');
ylabel('Amplitude');
title('OOK Signal Waveform');
% 画出OOK信号功率谱
subplot(2,1,2);
N = length(modulated_signal); % 信号长度
df = fs/N; % 频率分辨率
f = 0:df:fs/2; % 频率序列
Y = fft(modulated_signal)/N; % 傅里叶变换
P = 2*abs(Y(1:N/2+1)); % 单边功率谱密度
plot(f, P);
xlim([0 fs/2]);
xlabel('Frequency (Hz)');
ylabel('Power Spectral Density');
title('OOK Signal Power Spectral Density');
```
运行上述代码,可以得到以下OOK信号波形和功率谱图像:
![OOK信号波形和功率谱](https://img-blog.csdnimg.cn/20211009163354826/ook.png)
从图像中可以看出,OOK信号的波形是由数字信号和载波信号相乘得到的,数字信号的1对应着载波信号的存在,数字信号的0对应着载波信号的消失。OOK信号的功率谱是一个带状图,其带宽与数字信号的比特率有关。
阅读全文