通信原理(4)载波传输FSK

1 FSK调制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 FSK解调

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 载波FSK信号的仿真

MATLAB程序

仿真载波4-FSK信号

clc;
clear;
close all;

symbol = 10;	% 发送符号数

M  = 4;			% 4-FSK
T  = 1;			% 符号周期/s
delta = 1/T;	% FSK的频率间隔
fs = 100;		% 采样频率/Hz
ts = 1/fs;		% 采样时间间隔
t  = 0:ts:T-ts;	% 一个符号周期的时间矢量
fc = 10;		% 载波频率/Hz
c0 = sqrt(2/T)*exp(1j*2*pi*(fc + delta * 0)*t);% 载波信号0
c1 = sqrt(2/T)*exp(1j*2*pi*(fc + delta * 1)*t);% 载波信号1
c2 = sqrt(2/T)*exp(1j*2*pi*(fc + delta * 2)*t);% 载波信号2
c3 = sqrt(2/T)*exp(1j*2*pi*(fc + delta * 3)*t);% 载波信号3


% 绘制载波波形
figure;
subplot(4,1,1);plot(t,real(c0));legend('f = 10Hz');axis([-inf inf -5 5]);
subplot(4,1,2);plot(t,real(c1));legend('f = 11Hz');axis([-inf inf -5 5]);
subplot(4,1,3);plot(t,real(c2));legend('f = 12Hz');axis([-inf inf -5 5]);
subplot(4,1,4);plot(t,real(c3));legend('f = 13Hz');axis([-inf inf -5 5]);


msg  = randi([0 3],1,symbol);	% 消息比特(随机)
% 4-FSK载波调制
tx = zeros(1,length(msg)*length(t));
for k = 1:length(msg)
    for p = 1:length(t)
        if(msg(k) == 0)
			tx((k-1)*length(t)+p) = real(c0(p));
		elseif(msg(k) == 1)
			tx((k-1)*length(t)+p) = real(c1(p));
		elseif(msg(k) == 2)
			tx((k-1)*length(t)+p) = real(c2(p));
		elseif(msg(k) == 3)
			tx((k-1)*length(t)+p) = real(c3(p));
		else
			tx((k-1)*length(t)+p) = 0;
        end
    end
end
figure;
subplot(2,1,1);plot(tx);axis([-inf inf -5 5]);title('4-FSK 发送信号');
disp(['发送数据: ' num2str(msg)]);

% 信道传输
EsN0 = 20;						% 信噪比,Es/N0
snr1 = 10.^(EsN0/10);			% 信噪比转换为线性值
slow  = norm(tx).^2/symbol;		% 求每个符号的平均功率
sigma = sqrt(slow/(2*EsN0));				% 根据符号功率求噪声功率
rx    = tx + sigma*rand(1,length(tx));		% 加入AWGN
subplot(2,1,2);plot(rx);axis([-inf inf -5 5]);title('4-FSK 接收信号');


rx1 = reshape(rx,length(t),length(msg));	% 把数据变为一个符号是一列的格式
r0  = (c0 * rx1)/length(t);          		% 非相干解调,相关器输出,分别求与四种信号的互相关
r1  = (c1 * rx1)/length(t);
r2  = (c2 * rx1)/length(t);
r3  = (c3 * rx1)/length(t);
% 判决:欧氏距离最接近
msg_demodulation = zeros(1,symbol);
for k = 1:symbol
    Dis = zeros(1,M);
	Dis(1) = abs(r0(k));
	Dis(2) = abs(r1(k));
	Dis(3) = abs(r2(k));
	Dis(4) = abs(r3(k));
	[x,y] = max(Dis);% 求最大值
	msg_demodulation(k) = y-1;
end
disp(['收到数据: ' num2str(msg_demodulation)]);

bit_error_cnt = 0;
for k = 1:symbol
	if(msg_demodulation(k) ~= msg(k))
		% 当判定的接收比特与发送比特不一致时,认为判定错误
		bit_error_cnt = bit_error_cnt + 1;
	end
end
bit_error_percent = bit_error_cnt/symbol;
disp(['误码率: ' num2str(bit_error_percent)]);

结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值