通信原理基于matlab的计算机仿真
例 1-1
%周期信号(方波)的展开,fb_jinshi、m close all; clear all;
N=100; %取展开式的项数为2N+1项 T=1; fs=1/T;
N_sample=128; %为了画出波形,设置每个周期的采样点数 dt = T/N_sample; t=0:dt:10*T-dt;
n=-N:N;
Fn = sinc(n/2)、*exp(-j*n*pi/2); Fn(N+1)=0;
ft = zeros(1,length(t)); for m=-N:N
ft = ft + Fn(m+N+1)*exp(j*2*pi*m*fs*t); end
plot(t,ft)
例 1-2
利用FFT计算信号的频谱并与信号的真实频谱的抽样比较。
脚本文件T2F、m定义了函数T2F,计算信号的傅立叶变换。
function [f,sf]= T2F(t,st)
%This is a function using the FFT function to calculate a signal's Fourier %Translation
%Input is the time and the signal vectors,the length of time must greater %than 2
%Output is the frequency and the signal spectrum dt = t(2)-t(1); T=t(end); df = 1/T; N = length(st); f=-N/2*df:df:N/2*df-df;
sf = fft(st); sf = T/N*fftshift(sf);
脚本文件F2T、m定义了函数F2T,计算信号的反傅立叶变换。
function [t st]=F2T(f,sf)
%This function calculate the time signal using ifft function for the input %signal's spectrum df = f(2)-f(1);
Fmx = ( f(end)-f(1) +df); dt = 1/Fmx; N = length(sf);
通信原理基于matlab的计算机仿真
T = dt*N; %t=-T/2:dt:T/2-dt; t = 0:dt:T-dt; sff = fftshift(sf); st = Fmx*ifft(sff);
另写脚本文件fb_spec、m如下:
%方波的傅氏变换, fb_spec、m clear all;close all; T=1;
N_sample = 128; dt=T/N_sample; t=0:dt:T-dt;
st=[ones(1,N_sample/2), -ones(1,N_sample/2)]; %方波一个周期
subplot(211); plot(t,st); axis([0 1 -2 2]);
xlabel('t'); ylabel('s(t)'); subplot(212);
[f sf]=T2F(t,st); %方波频谱 plot(f,abs(sf)); hold on; axis([-10 10 0 1]);
xlabel('f');ylabel('|S(f)|');
%根据傅氏变换计算得到的信号频谱相应位置的抽样值
sff= T^2*j*pi*f*0、5、*exp(-j*2*pi*f*T)、*sinc(f*T*0、5)、*sinc(f*T*0、5); plot(f,abs(sff),'r-')
例1-3
%信号的能量计算或功率计算,sig_pow、m clear all; close all; dt = 0、01; t = 0:dt:5;
s1 = exp(-5*t)、*cos(20*pi*t); s2 = cos(20*pi*t);
E1 = sum(s1、*s1)*dt; %s1(t)的信号能量 P2 = sum(s2、*s2)*dt/(length(t)*dt); %s2(t)的信号功率s [f1 s1f]= T2F(t,s1); [f2 s2f]= T2F(t,s2); df = f1(2)-f1(1);
E1_f = sum(abs(s1f)、^2)*df; %s1(t)的能量,用频域方式计算 df = f2(2)-f2(1); T = t(end);
P2_f = sum(abs(s2f)、^2)*df/T; %s2(t)的功率,用频域方式计算 figure(1)
通信原理基于matlab的计算机仿真
subplot(211) plot(t,s1);
xlabel('t'); ylabel('s1(t)'); subplot(212) plot(t,s2)
xlabel('t'); ylabel('s2(t)');
例1-4
%方波的傅氏变换,sig_band、m clear all; close all; T=1;
N_sample = 128; dt=1/N_sample;
t=0:dt:T-dt;
st=[ones(1,N_sample/2) -ones(1,N_sample/2)]; df=0、1/T; Fx = 1/dt; f=-Fx:df:Fx-df;
%根据傅氏变换计算得到的信号频谱
sff= T^2*j*pi*f*0、5、*exp(-j*2*pi*f*T)、*sinc(f*T*0、5)、*sinc(f*T*0、5); plot(f,abs(sff),'r-') axis([-10 10 0 1]); hold on;
sf_max = max(abs(sff));
line([f(1) f(end)],[sf_max sf_max]);
line([f(1) f(end)],[sf_max/sqrt(2) sf_max/sqrt(2)]); %交点处为信号功率下降3dB处 Bw_eq = sum(abs(sff)、^2)*df/T/sf_max、^2; %信号的等效带宽
例 1-5
%带通信号经过带通系统的等效基带表示,sig_bandpass、m clear all; close all; dt = 0、01; t = 0:dt:5;
s1 = exp(-t)、*cos(20*pi*t); %输入信号 [f1 s1f]= T2F(t,s1); %输入信号的频谱
s1_lowpass = hilbert(s1)、*exp(-j*2*pi*10*t); %输入信号的等效基带信号 [f2 s2f]=T2F(t,s1_lowpass); %输入等效基带信号的频谱 h2f = zeros(1,length(s2f));
[a b]=find( abs(s1f)==max(abs(s1f)) ); %找到带通信号的中心频率 h2f( 201-25:201+25 )= 1; h2f( 301-25:301+25) = 1;
h2f = h2f、*exp(-j*2*pi*f2); %加入线性相位,