⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsk_nocoherent.m

📁 自己开发的fsk调制以及非相关解调代码
💻 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 + -