好文档 - 专业文书写作范文服务资料分享网站

通信原理基于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); 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) 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); %加入线性相位,

[t1 h1] = F2T(f2,h2f); %带通系统的冲激响应 h1_lowpass = hilbert(h1).*exp(-j*2*pi*10*t1); %等效基带系统的冲激响应

figure(1) subplot(521); plot(t,s1);

xlabel('t'); ylabel('s1(t)'); title('带通信号'); subplot(523);

.

.

plot(f1,abs(s1f));

xlabel('f'); ylabel('|S1(f)|'); title('带通信号幅度谱'); subplot(522) plot(t,real(s1_lowpass));

xlabel('t');ylabel('Re[s_l(t)]');title('等效基带信号的实部'); subplot(524) plot(f2,abs(s2f));

xlabel('f');ylabel('|S_l(f)|');title('等效基带信号的幅度谱'); %画带通系统及其等效基带的图 subplot(525) plot(f2,abs(h2f));

xlabel('f');ylabel('|H(f)|');title('带通系统的传输响应幅度谱'); subplot(527) plot(t1,h1);

xlabel('t');ylabel('h(t)');title('带通系统的冲激响应');

subplot(526)

[f3 hlf]=T2F(t1,h1_lowpass); plot(f3,abs(hlf));

xlabel('f');ylabel('|H_l(f)|');title('带通系统的等效基带幅度谱');

subplot(528) plot(t1,h1_lowpass);

xlabel('t');ylabel('h_l(t)');title('带通系统的等效基带冲激响应');

%画出带通信号经过带通系统的响应 及 等效基带信号经过等效基带系统的响应 tt = 0:dt:t1(end)+t(end); yt = conv(s1,h1);

subplot(529) plot(tt,yt);

xlabel('t');ylabel('y(t)');title('带通信号与带通系统响应的卷积')

ytl = conv(s1_lowpass,h1_lowpass).*exp(j*2*pi*10*tt); subplot(5,2,10) plot(tt,real(yt));

xlabel('t');ylabel('y_l(t)cos(20*pi*t');

title('等效基带与等效基带系统响应的卷积×中心频率载波')

例 1-6

.

通信原理基于matlab的计算机仿真

.例1-1%周期信号(方波)的展开,fb_jinshi.mcloseall;clearall;N=100;%取展开式的项数为2N+1项T=1;fs=1/T;N_sample=128;%为了画出
推荐度:
点击下载文档文档为doc格式
9b41o2l7n29pg7z7hdvh6c4rp7oyx100sny
领取福利

微信扫码领取福利

微信扫码分享