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

📄 cpmmod_main.asv

📁 cpm连续相位调制系统的matlab仿真程序
💻 ASV
字号:
% CPM modulation main program

clear;
% fc=carrier frequency
% T=symbol period
% Ts=sample period

fc=12*(10^3);
fsym=28*10^3;
fs=3*fsym;
T=1/fsym;
Ts=1/fs;

% length of wave displayed
display_sym=20;

% test sequence
sym_seq_4ary=(floor(rand(1,10000)*4)-2)*2+1;
sym_seq_2ary=round(rand(1,10000)-1);
sym_seq=sym_seq_4ary(1:2048);

%***********************
% CPM modulator process
%***********************

% modulator index array
h=[4,5]/16;

% initialized
% k      = sample index
% n      = symbol index
% theta =start phase of each symbol
% fai   =instant phase of sample
k=1;
theta=0;
fai=0;

for n=1:length(sym_seq)
   In=sym_seq(n);
   hn=h(mod(n-1,2)+1);
   for i=1:round(T/Ts)
   fai=theta+2*pi*In*hn*((k-1)*Ts-(n-1)*T)/(2*T);
   sd(k)=cos(2*pi*fc*(k-1)*Ts+fai);
   k=k+1;    
   end    
   theta=theta+pi*hn*In;
   state(n)=theta;
end    

% display wave in time domain
plot(sd(1:round(T/Ts)*display_sym));
title('CPM time wave');
xlabel('');
grid on;
zoom on;
debug=1;

% display state transition
state_x=cos(state);
state_y=sin(state);
plot(state_x,state_y);
grid on;
zoom on;
debug=1;

% display frequency spectrum
N_FFT=256;
psd=zeros(1,N_FFT);
for i=1:5
psd=psd+abs(fft(sd((i-1)*N_FFT+1:i*N_FFT),N_FFT))
end
psd=psd/5;

N_fc=fc/(fs/N_FFT)+1;
x=(0:N_FFT/2-N_fc)*(fs/N_FFT)/fsym;
y=psd(N_fc:N_FFT/2);
plot(x-x(1),y);
grid on;
zoom on;
debug=1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -