2FSK信号的调制与解调matlab程序
clear all; close all; f = 300; t = 2*(0:0.001:1-0.01)/f; x = t; singal= sin(2*pi*f*x)+1; % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % u率PCM编码 % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % a = singal; n = 8; %u率非线性 u = 255;%%%%%%%%%%%%待考察,应当是255%%%%%% c = zeros(size(a)); for i = 1:length(a) c(i) = log(1+u*a(i))/log(1+u); %在PCM中要求x应当大于0 end cmax = max(c); cmin = min(c); %匀称量化 c_quan = c; b_quan = c_quan; d = (cmax - cmin)/n; %此处有问题%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % % % % % % % % % % % % 自己写的量化代码% % % % % % % % % % % % for j = 1:n+1 kk(j) = cmin + j*d; end for k = 1:n q(k) = (kk(k)+kk(k+1))/2; end % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % for i = 1:n m = find((q(i)-d/2 = c_quan)); c_quan(m) = q(i).*ones(1,length(m)); b_quan(find(c_quan==q(i))) = (i-1).* ones(1,length(find(c_quan==q(i)))); end % 编码 nu = ceil(log2(n)); code = zeros(length(a),nu); for i = 1:length(a) for j = (nu-1):-1:0 if (fix(b_quan(i)/(2^j))==1) code(i,(nu-j)) = 1; b_quan(i) = b_quan(i)-2^j; end end end bitstorm = []; for i = 1:length(code) bitstorm = [bitstorm,code(i,:)]; end % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % FSK调制的实现 % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % figure(1) subplot(221); stairs (bitstorm(1:20)); title( 调制信号 ); axis([0,20,-0.1,1.2]); grid on % % % % % % % % % % % % %这是设置随机数值 % % % % % % % % % % % % % % % % % % % % % % % rand( state ,sum(100*clock)); randn( state ,sum(100*clock)); mintestlongth = 1000; maxtestlongth = 1000; A = 1; Eb = A * A; SNR = 10; %信噪比 index = 1; % for SNR1 = 0:10 disp ( 程序在运行,请稍等. ); N0 = Eb * 10^(-SNR/10);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%待解决 noiseVar = N0/2;%噪声密度 noiseRoot = sqrt(noiseVar) % 噪声的均方差 errorCount = 0; testCount = 0; f1 = 1; f2 = 2; mm = 0:0.02:1-0.02;%抽样判决在t轴上的抽样矩阵 i = 0; DemoFSK = zeros(1,mintestlongth); FSK = zeros(1,10*length(mm)); %%%%%%%%%%%%%%%%%%%%这是为什么 noise_FSK = zeros(1,10*length(mm)); while (1) i = i +1; % % % % % % % % % % % % % % % % % % % % 调制解调 src = bitstorm(i); src1 = src; src2 = 1-src; noise = noiseRoot.*randn(1,length(noiseRoot));%高斯白噪声矩阵 fsk = cos(2*pi*f1*mm)*src1 + cos(2*pi*f2*mm)*src2; noise_fsk = fsk + noise; if i <= 10 FSK(1+length(mm)*(i-1):length(mm)*i) = fsk; %修改过%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% noise_FSK(1+length(mm)*(i-1):length(mm)*i) = noise_fsk; end ofsk1 = noise_fsk.* cos(2*pi*f1*mm); ofsk2 = noise_fsk.* cos(2*pi*f2*mm);