MATLAB中2FSK调制系统代码
时间: 2024-02-24 08:54:27 浏览: 115
以下是MATLAB中2FSK调制系统的代码,包含信号生成、调制、解调和误差率计算部分:
```matlab
%% 2FSK调制系统代码
clear; clc;
%% 参数设置
fc1 = 1000; % 第一个载波频率
fc2 = 2000; % 第二个载波频率
fs = 8000; % 采样频率
T = 1; % 信号持续时间
R = 100; % 每秒传输比特数
N = T*fs; % 采样点数
tb = 1/R; % 每个比特的时间
A = 1; % 信号幅值
Eb = 1; % 每个比特的能量
%% 信号生成
bits = randi([0 1], 1, N/R); % 随机产生二进制比特流
t = (0:N-1)/fs; % 时间序列
msg = kron(bits, ones(1, fs*R)); % 重复每个比特,形成消息信号
s = A*cos(2*pi*fc1*t + 2*pi*(fc2-fc1)/tb*cumsum(msg)); % 2FSK调制信号
%% 解调
fc = (fc1+fc2)/2; % 解调载波频率
fdev = (fc2-fc1)/tb/2; % 频偏
Kp = 1/fdev; % 相位解调器增益
Kf = fdev/2/pi; % 频率解调器增益
phihat = angle(s(2:end).*conj(s(1:end-1))); % 相位差
phihat_unwrap = unwrap(phihat); % 去除2*pi的相位差
fh = diff(phihat_unwrap)/(1/fs);% 相邻符号间的频率
bhat = (fh > 0)'; % 解调输出比特流
%% 误码率计算
err_bits = sum(bits ~= bhat);
BER = err_bits/length(bits);
disp(['误码率为:', num2str(BER)]);
```
该代码首先设置了调制参数,如载波频率、采样频率、信号持续时间等。随机产生二进制比特流,重复每个比特形成消息信号。然后采用2FSK调制方式,生成2FSK调制信号。最后,根据解调原理解调信号,并计算误码率。
阅读全文