% FSK调制和解调的Matlab仿真

% 参数设置 Fs = 300; % 采样率 T = 0.5; % 每个二进制码元符号的持续时间 bits = 10; % 二进制码元位数

% 随机生成10位二进制码元 x = randi([0 1], 1, bits);

% 调制过程 t = 0:1/Fs:T-1/Fs; % 时间序列 f1 = 100; % 0码元对应的频率 f2 = 200; % 1码元对应的频率 modulated_signal = fsk_modulation(x, t, f1, f2);

% 解调过程 de modulated_signal = fsk_demodulation(modulated_signal, t, f1, f2);

% 绘制原始信号和解调信号的波形 subplot(2, 1, 1); plot(0:(bitsFsT-1), modulated_signal); title('Modulated Signal'); xlabel('Sample'); ylabel('Amplitude');

subplot(2, 1, 2); plot(0:(bitsFsT-1), demodulated_signal); title('Demodulated Signal'); xlabel('Sample'); ylabel('Amplitude');

% FSK调制函数 function modulated_signal = fsk_modulation(x, t, f1, f2) modulated_signal = []; for i = 1:length(x) if x(i) == 0 modulated_signal = [modulated_signal sin(2pif1t)]; else modulated_signal = [modulated_signal sin(2pif2t)]; end end end

% FSK解调函数 function demodulated_signal = fsk_demodulation(modulated_signal, t, f1, f2) demodulated_signal = []; for i = 1:length(modulated_signal)/(length(t)) if sum(modulated_signal((i-1)length(t)+1:ilength(t)).sin(2pif1t)) > sum(modulated_signal((i-1)length(t)+1:ilength(t)).sin(2pif2t)) demodulated_signal = [demodulated_signal 0]; else demodulated_signal = [demodulated_signal 1]; end end end

以上代码定义了两个子函数:fsk_modulation用于实现FSK调制,fsk_demodulation用于实现FSK解调。这两个子函数分别被用于调制和解调过程。


原文地址: https://www.cveoy.top/t/topic/Pnc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录