视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Matlab通信系统建模与仿真例题源代码-第三章
2025-09-30 23:20:07 责编:小OO
文档
% ch3example1A.m

clear;

f_p=2400; f_s=5000; R_p=3; R_s=25;     % 设计要求指标

[n, fn]=buttord(f_p,f_s,R_p,R_s, 's'); % 计算阶数和截止频率

Wn=2*pi*fn;                            % 转换为角频率

[b,a]=butter(n, Wn, 's');              % 计算H(s)

f=0:100:10000;                         % 计算频率点和频率范围

s=j*2*pi*f;                            % s=jw=j*2*pi*f

H_s=polyval(b,s)./polyval(a,s);        % 计算相应频率点处H(s)的值

figure(1);

subplot(2,1,1); plot(f, 20*log10(abs(H_s))); % 幅频特性

axis([0 10000 -40 1]);

xlabel('频率 Hz');ylabel('幅度 dB');

subplot(2,1,2); plot(f, angle(H_s));         % 相频特性

xlabel('频率 Hz');ylabel('相角 rad');

figure(2); freqs(b,a);  % 也可用指令freqs直接画出H(s)的频率响应曲线。

% ch3example1B.m

clear;

f_p=2400; f_s=5000; R_p=3; R_s=25;     % 设计要求指标

[n, fn]=ellipord(f_p,f_s,R_p,R_s,'s'); % 计算阶数和截止频率

Wn=2*pi*fn;                            % 转换为角频率

[b,a]=ellip(n,R_p,R_s,Wn,'s');         % 计算H(s)

f=0:100:10000;                         % 计算频率点和频率范围

s=j*2*pi*f;                            % s=jw=j*2*pi*f

H_s=polyval(b,s)./polyval(a,s);        % 计算相应频率点处H(s)的值

figure(1);

subplot(2,1,1); plot(f, 20*log10(abs(H_s))); % 幅频特性

axis([0 10000 -40 1]);

xlabel('频率 Hz');ylabel('幅度 dB');

subplot(2,1,2); plot(f, angle(H_s));         % 相频特性

xlabel('频率 Hz');ylabel('相角 rad');

figure(2); freqs(b,a);   % 也可用指令freqs直接画出H(s)的频率响应曲线。

% ch3example2A.m

f_N=8000;                          % 采样率

f_p=2100; f_s=2500; R_p=3; R_s=25; % 设计要求指标

Ws=f_s/(f_N/2); Wp=f_p/(f_N/2);    % 计算归一化频率

[n, Wn]=buttord(Wp,Ws,R_p,R_s);    % 计算阶数和截止频率

[b,a]=butter(n, Wn);               % 计算H(z)

figure(1);

freqz(b,a, 1000, 8000)             % 作出H(z)的幅频相频图, freqz(b,a, 计算点数, 采样率)

subplot(2,1,1); axis([0 4000 -30 3])

figure(2);                              % 第二种作图方法

f=0:40:4000;                            % 计算频率点和频率范围

z=exp(j*2*pi*f./(f_N));                 % 

H_z=polyval(b,z)./polyval(a,z);         % 计算相应频率点处H(s)的值

subplot(2,1,1); plot(f, 20*log10(abs(H_z))); % 幅频特性

axis([0 4000 -40 1]);

xlabel('频率 Hz');ylabel('幅度 dB');

subplot(2,1,2); plot(f, angle(H_z));         % 相频特性

xlabel('频率 Hz');ylabel('相角 rad');

% ch3example3A.m

f_N=8000;                            % 采样率

f_p=1000; f_s=700; R_p=3; R_s=20;    % 设计要求指标

Ws=f_s/(f_N/2); Wp=f_p/(f_N/2);      % 计算归一化频率

[n, Wn]=cheb1ord(Wp,Ws,R_p,R_s);     % 计算阶数和截止频率

[b,a]=cheby1(n, R_p, Wn, 'high');    % 计算H(z)

freqz(b,a, 1000, 8000) % 作出H(z)的幅频相频图, freqz(b,a, 计算点数, 采样率)

subplot(2,1,1); axis([0 4000 -30 3])

% ch3example4A.m

f_N=10000;                                        % 采样率

f_p=[1000, 1500]; f_s=[600, 1900]; R_p=3; R_s=20; % 设计要求指标

Ws=f_s/(f_N/2); Wp=f_p/(f_N/2);                   % 计算归一化频率

[n, Wn]=ellipord(Wp,Ws,R_p,R_s);                  % 计算阶数和截止频率

[b,a]=ellip(n, R_p, R_s, Wn);                     % 计算H(z)

freqz(b,a, 1000, 10000) % 作出H(z)的幅频相频图, freqz(b,a, 计算点数, 采样率)

subplot(2,1,1); axis([0 5000 -30 3])

% ch3example5A.m

f_N=10000; %采样率

f_p=[1000, 1500]; f_s=[1200, 1300]; R_p=3; R_s=30; %设计要求指标

Ws=f_s/(f_N/2); Wp=f_p/(f_N/2); %计算归一化频率

[n, Wn]=cheb2ord(Wp,Ws,R_p,R_s); %计算阶数和截止频率

[b,a]=cheby2(n,R_s, Wn, 'stop'); %计算带阻H(z)系数

freqz(b,a, 1000, 10000) %作出H(z)的幅频相频图, freqz(b,a, 计算点数, 采样率)

subplot(2,1,1); axis([0 5000 -35 3])

% ch3example6A.m

Fs=8000; Ts=1/8000;  % 采样率

f0=500;              % 梳状滤波器开槽基频率

bw=60/(Fs/2);        % 归一化开槽带宽

ab=-3 ;              % 计算开槽带宽位置处的衰减分贝值

n=Fs/f0;             % 计算滤波器阶数

[num,den] = iircomb(n,bw,ab, 'notch'); % 计算H(z)

freqz(num,den, 4000, 8000); % 作出H(z)的幅频相频图

axis([0 4000 -30 5]);

% ch3example10.m

sim('ch3example10.mdl');

bar([-10:1/5:10-1/5],histdata);

axis([-10 10 0 0.05]);% 作出归一化统计直方图

% ch3example10prg.m

sim('ch3example10.mdl');

bar([-10:1/5:10-1/5],histdata*5);

axis([-10 10 0 0.25]);% 作出归一化统计直方图

% ch3example11prg1.m

t=-1: 0.01 :10 ;                    % 计算时间范围

f_t=exp(-t).*(t>0);

subplot(3,1,1);plot(t,f_t);         % 时域波形

axis([-1 10 -0.1 1.1]); xlabel('time (sec)');

w=-40: 0.1 : 40;                    % 计算角频率范围

F_w=1./(1+j*w);                     % 频谱理论结果

subplot(3,1,2);plot(w, abs(F_w));   % 频域幅度谱

axis([-40 40 0 1.1]);xlabel('freq (rad/s)');

subplot(3,1,3);plot(w, angle(F_w)); % 频域相位谱

axis([-40 40 -pi/2 pi/2]);xlabel('freq (rad/s)');

% ch3example11prg2.m

w_m=40;     % 截断频率

T=pi/w_m;   % 采样间隔

L=5; 

t=0: T :L ; % 时域截断

x_t=exp(-t).*(t>0); %信号序列

N=length(x_t);      %序列长度(点数)

%-----------------------------------

X_k=fft(x_t);                % FFT计算

%-----------------------------------

w0=2*pi/(N*T);               % 离散频率间隔

kw=2*pi/(N*T) .*[0: N-1];    % 离散频率样点

X_kw=T.*X_k;                 % 乘以T得到连续傅利叶变换频谱的样值

%-----------------------------------

subplot(2,1,1); 

plot(kw, abs(X_kw),'.','MarkerSize', 14); % 作出数值计算的幅度谱点

axis([-40 90 -0.1 1.1]);xlabel('freq (rad/s)');

hold on;                                  % 保持前面作图曲线不被擦除

w=-40: 0.1 : 40;

X_w=1./(1+j*w);                           % 理论计算频谱表达式

plot(w, abs(X_w));                        % 作图对比

subplot(2,1,2); 

plot(kw, angle(X_kw),'.','MarkerSize', 14); % 作出数值计算的相位谱点

hold on;

plot(w,  angle(X_w));                       % 频域相位谱

axis([-40 90 -pi pi]);xlabel('freq (rad/s)');

% ch3example12prg1.m

Df=5;      % 频率间隔

f_s=2*500; % 采样率

N=f_s/Df;  % 序列点数

t=0:1./f_s:(N-1)./f_s;    % 计算时间段

freq=0:Df:(N-1)*Df;       % 计算频率段

f_t=2*sin(2*pi*100*t)+cos(2*pi*180*t); % 信号

F_f=1/f_s*fft(f_t,N);     % 用FFT计算频谱

plot(freq-f_s/2,abs(fftshift(F_f)));   % 将零频率移动到FFT中心

xlabel('频率 Hz'); ylabel('幅度谱');   % 并作出幅度频谱

% ch3example14prg1.m

fs=200;                           % 采样率

Delta_f = 1;                      % 频率分辨率

T = 1/fs;                         % 时间分辨率

L=1/ Delta_f;                     % 时域截取长度

N= floor(fs/Delta_f)+1;           % 计算截断信号的采样点数

t=0:T:L;                          % 截取时间段和采样时间点

freq=0: Delta_f :fs;              % 分析的频率范围和频率分辨率

f_t =(sin(2*pi*50*t)+0.7*sin(2*pi*75*t))'; 

% 在截取范围内的分析的信号时域波形

f_t_rectwin= rectwin(N).*f_t./sqrt(sum(abs(rectwin(N).^2))./N); 

% 矩形窗(功率归一化)

f_t_hamming= hamming(N) .*f_t./sqrt(sum(abs(hamming(N).^2))./N);

% 海明窗(功率归一化)

f_t_hann = hann(N) .*f_t./sqrt(sum(abs(hann(N).^2))./N);        

% 汉宁窗(功率归一化)

F_w_rectwin =T.* fft(f_t_rectwin, N);

% 进行N点FFT,并乘以采样时间间隔T得到频谱

F_w_hamming =T.* fft(f_t_hamming, N);      % 加海明窗的频谱

F_w_hann =T.* fft(f_t_hann, N);            % 加汉宁窗的频谱figure(1);

subplot(2,2,1);plot(t,f_t);title('Original Signal');

subplot(2,2,2);plot(t, f_t_rectwin);title('Rectwin Windowing');

subplot(2,2,3);plot(t, f_t_hamming);title('hamming Windowing');

subplot(2,2,4);plot(t, f_t_hann);title('hanning Windowing');

figure(2);

subplot(3,1,1);plot(freq, 10*log10(abs(F_w_rectwin)));

title('Rectwin Windowing Spectrum');ylabel('幅度 dB');

axis([0,200,-50,0]);grid on;

subplot(3,1,2);plot(freq, 10*log10(abs(F_w_hamming)));

title('hamming Windowing Spectrum');ylabel('幅度 dB');

axis([0,200,-50,0]);grid on;

subplot(3,1,3);plot(freq, 10*log10(abs(F_w_hann)));

title('hanning Windowing Spectrum');ylabel('幅度 dB');

axis([0,200,-50,0]);grid on;

p_original_signal=var(f_t)   % 计算原始信号的平均功率

p_hannwindowed=sum((abs(F_w_hann/T)).^2)/(N^2) % 计算加窗后的信号功率

% ch3example16prg1.m

fs=500;            % 采样率

Df=1;              % 频率分辨率

N=floor(fs/Df)+1;  % 计算的序列点数

t=0:1/fs:(N-1)/fs; % 截取信号的时间段

F=0:Df:fs;         % 功率谱估计的频率分辨率和范围

xk=sin(2*pi*50*t)+2*sin(2*pi*130*t)+randn(1,length(t));

                   % 截取时间段上的离散信号样点序列

Pxx=abs(fft(xk)).^2/(N^2);   % 功率谱估计

Pav_timedomaim=sum(xk.^2)/N  % 在时域计算信号功率

Pav_freqdomain=sum(Pxx)      % 通过功率谱计算信号功率

plot(F,10*log10(Pxx));xlabel('freq Hz');ylabel('PSD dB') % 作出功率谱密度图

% ch3example16prg2.m

fs=500;            % 采样率

Df=1;              % 频率分辨率

N=floor(fs/Df)+1;  % 计算的序列点数

t=0:1/fs:(N-1)/fs; % 截取信号的时间段

F=0:Df:fs;         % 功率谱估计的频率分辨率和范围

xk=sin(2*pi*50*t)+2*sin(2*pi*130*t)+randn(1,length(t));

                   % 截取时间段上的离散信号样点序列

Pxx=(abs(fft(xk(1:167))).^2+...

     abs(fft(xk(168:334))).^2+...

     abs(fft(xk(335:501))).^2)/3/((N/3)^2);

Pav_timedomaim=sum(xk.^2)/N  % 在时域计算信号功率

Pav_freqdomain=sum(Pxx)      % 通过功率谱计算信号功率

plot(0:3:fs,10*log10(Pxx));xlabel('freq Hz');ylabel('PSD dB');

%作出功率谱密度图

% ch3example16prg3.m

fs=500;            % 采样率

Df=1;              % 频率分辨率

N=floor(fs/Df)+1;  % 计算的序列点数

t=0:1/fs:(N-1)/fs; % 截取信号的时间段

F=0:Df:fs;         % 功率谱估计的频率分辨率和范围

xk=sin(2*pi*50*t)+2*sin(2*pi*130*t)+randn(1,length(t));

                   % 截取时间段上的离散信号样点序列

Pxx=(abs(fft(xk(1:167))).^2+...

     abs(fft(xk(83:249))).^2+...

     abs(fft(xk(168:334))).^2+...

     abs(fft(xk(250:416))).^2+...

     abs(fft(xk(335:501))).^2)/5/((N/3)^2);

Pav_timedomaim=sum(xk.^2)/N  % 在时域计算信号功率

Pav_freqdomain=sum(Pxx)      % 通过功率谱计算信号功率

plot(0:3:fs,10*log10(Pxx));xlabel('freq Hz');ylabel('PSD dB');

%作出功率谱密度图

% ch3example16prg4.m

fs=500;            % 采样率

Df=1;              % 频率分辨率

N=floor(fs/Df)+1;  % 计算的序列点数

t=0:1/fs:(N-1)/fs; % 截取信号的时间段

F=0:Df:fs;         % 功率谱估计的频率分辨率和范围

xk=sin(2*pi*50*t)+2*sin(2*pi*130*t)+randn(1,length(t));

                   % 截取时间段上的离散信号样点序列

w=hamming(167)';%海明窗

w=w*sqrt(167/sum(w.*w));% 使得海明窗与矩形窗等能量,即加窗后不对信号功率产生影响

Pxx=(abs(fft(w.*xk(1:167))).^2+...

     abs(fft(w.*xk(83:249))).^2+...

     abs(fft(w.*xk(168:334))).^2+...

     abs(fft(w.*xk(250:416))).^2+...

     abs(fft(w.*xk(335:501))).^2)/5/((N/3)^2);

Pav_timedomaim=sum(xk.^2)/N  % 在时域计算信号功率

Pav_freqdomain=sum(Pxx)      % 通过功率谱计算信号功率

plot(0:3:fs,10*log10(Pxx));xlabel('freq Hz');ylabel('PSD dB');%作出功率谱密度图

% ch3example16prg5.m

fs=500;            % 采样率

Df=1;              % 频率分辨率

N=floor(fs/Df)+1;  % 计算的序列点数

t=0:1/fs:(N-1)/fs; % 截取信号的时间段

F=0:Df:fs;         % 功率谱估计的频率分辨率和范围

xk=sin(2*pi*50*t)+2*sin(2*pi*130*t)+randn(1,length(t));

                   % 截取时间段上的离散信号样点序列

[Pxx,F] = psd(xk,512,500,hamming(256),128); 

plot(F,10*log10(Pxx/(512/2))); xlabel('freq Hz');ylabel('PSD dB')

Pav=sum(Pxx/(512/2)) % 通过功率谱计算信号功率

% ch3example23prg1.m

kc=150e3;              % Hz/V  VCO控制灵敏度

omega_n=2*pi*15e3/2.5; % PLL自然角频率

K=2*pi*(0.5*kc);       % 估算环路增益

zeta=1;                % 临界阻尼

tau_1=K/((omega_n).^2);

tau_2=2*zeta/omega_n-1/K;

freq=0:10:100e3;  % 计算频率范围0到100KHz

s=j*2*pi*freq;

G_s=(1+tau_2*s)./(1+tau_1*s);       % 环路滤波器传递函数

figure(1);semilogx(freq,(abs(G_s)));% 作出环路滤波器的频率响应

title('环路滤波器幅频响应');xlabel('Hz');ylabel('|G(s)|');

grid on;

b=[tau_2,1]; % 环路滤波器分子系数向量

a=[tau_1,1]; % 环路滤波器分母系数向量

H_s=(G_s*K./s)./(1+G_s*K./s);

figure(2);semilogx(freq,20*log10(abs(H_s)));% 作出闭环频率响应

title('PLL线性相位模型闭环频率响应');xlabel('Hz');ylabel('20log|H(s)|(dB)');

grid on;下载本文

显示全文
专题