📄 fsk_nocoherent.m
字号:
clear all;
close all;
%Sampling frequency.
Fs = 40000;
% samples per bit
L = 100;
Tb = L/Fs;
Fc1 = 5200;
Fc2 = 4800;
t=[1/Fs:1/Fs:Tb];
num_samp = 30000;
Vec_sgnl = wavrecord(num_samp,Fs,1);
[a b] = size(Vec_sgnl);
if(b == 1)
Vec_sgnl = Vec_sgnl';
end
u1 = cos(2*pi*Fc1*t);
v1 = sin(2*pi*Fc1*t);
u2 = cos(2*pi*Fc2*t);
v2 = sin(2*pi*Fc2*t);
% The process of bit synchronization
max_vec = [];
Demodul_bits = [];
buf = [];
buff = [];
for ii=1:(2*L-1)
Buf_bits = Vec_sgnl(ii: ii+L);
Buf_Output = conv(u1,Buf_bits);
max_per_value = max(Buf_Output);
max_vec = [ max_vec; max_per_value ii ];
end
[max_value,idx] = max(max_vec(:,1));
bit_start = max_vec(idx,2);
fprintf('max_value = %d \r\n',max_value);
% Buf_Output = conv(u1,Vec_sgnl(1:3*L));
% [max_value,idx] = max(Buf_Output);
% bit_start = idx;
Data_stream = Vec_sgnl(bit_start:end);
len = length(Data_stream);
M = fix(len/L);
for ii = 0:(M-1)
Data_Bit = Data_stream((1 + L*ii): (L + L*ii));
u1_out = Data_Bit.*u1;
ru1 = sum(u1_out);
v1_out = Data_Bit.*v1;
rv1 = sum(v1_out);
r1 = ru1^2 + rv1^2;
u2_out = Data_Bit.*u2;
ru2 = sum(u2_out);
v2_out = Data_Bit.*v2;
rv2 = sum(v2_out);
r2 = ru2^2 + rv2^2;
z = r1 - r2;
buf1 = r1/r2;
buf2 = r2/r1;
buf = [buf buf1];
buff =[buff buf2];
%decision
if (z>=0)
Demodul_bits = [Demodul_bits 1];
else
Demodul_bits = [Demodul_bits 0];
end;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -