以下是在 Matlab 中产生独立同分布的二进制信源并画出 OOK、2PSK 和 2FSK 信号波形和功率谱的代码示例:
% 产生独立同分布的二进制信源(共 1000 个码元) data = randi([0 1], 1, 1000);
% 设置常数 fs = 1000; % 采样频率(设为码元速率的整数倍) T = 1 / fs; % 采样周期
% OOK 信号 % 设置常数 fc = 100; % 载波频率 A = 1; % 载波幅度 % 产生 OOK 信号 ook_signal = A * data; % 画出 OOK 信号波形 t = (0:length(ook_signal)-1) * T; % 时间向量 figure; plot(t, ook_signal); xlabel('时间 (s)'); ylabel('幅度'); title('OOK 信号波形'); % 画出 OOK 信号功率谱 nfft = 2^nextpow2(length(ook_signal)); ook_psd = pwelch(ook_signal, [], [], nfft, fs); f = fs/2*linspace(0,1,nfft/2+1); figure; plot(f, ook_psd(1:nfft/2+1)); xlabel('频率 (Hz)'); ylabel('功率谱密度 (W/Hz)'); title('OOK 信号功率谱');
% 2PSK 信号 % 设置常数 fc = 100; % 载波频率 A = 1; % 载波幅度 phi = pi; % 初相位 % 产生 2PSK 信号 psk_signal = A * cos(2pifct + phidata); % 画出 2PSK 信号波形 figure; plot(t, psk_signal); xlabel('时间 (s)'); ylabel('幅度'); title('2PSK 信号波形'); % 画出 2PSK 信号功率