梯形波信号的频谱及其渐近线
%% 梯形波信号的频谱及其渐近线 于博士的代码clc;clear all;
%%
f0 = 10e6; % 10 MHz
T = 1/f0;% 周期
D = 0.5; % 占空比
tol = D*T; % 脉宽
A = 1; % 幅度
Tr = 1e-9; % 上升时间1ns
N = 600;
%%
%% 频谱包络
f = (0.1:0.1:N)/T;
S_temp =2*(A*tol/T)*abs(sin(pi*f*tol)./(pi*f*tol)).*abs(sin(pi*f*Tr)./(pi*f*Tr));
fx = ;
S_env = ;
%% 离散谱线
n = 1:1:N;
temp_discrete = 2*(A*tol/T)*abs(sin(n*pi*f0*tol)./(n*pi*f0*tol)).*abs(sin(n*pi*f0*Tr)./(n*pi*f0*Tr));
%temp_discrete = 频谱包络线
x = /T;
val_discrete = ;
%val_discrete的第一个元素是直流分量的值(频率为0时的分量A*D),而后续元素则是 temp_discrete 中的值,它们共同构成了信号的离散频谱。
% 转化为对数坐标
f_db = ;
dB_S_env = ;
x_db = 20*log10((1:2:N)/T);
%20*7=140 20*(7+lg3)=149 20*(7+lg5)=154渐近线的交叉点频率f=1/(π*τ),交叉点为20lg(2τ/T)
dB_val_discrete = 20*log10(val_discrete(2:2:end));
% 渐近线
f1 = linspace(0.01,1/(pi*tol),1000);
y1 = 20*log10(2*A*tol/T).*ones(size(f1));
%********************
%这行代码首先计算了20*log10(2*A*tol/T),这是梯形波信号频谱在频率趋近于0时的渐近线的对数幅度值。
%然后,通过.*ones(size(f1)),这个值被扩展成一个与f1相同大小的数组y1。
%这样做的目的是在绘图时,y1数组中的每个元素都代表渐近线的值,从而可以形成一条水平的渐近线。
%********************
%当f<<1/(π*τ),y1=20lg(2τA/T),斜率为0
f2 = linspace(1/(pi*tol),1/(pi*Tr),1000);
y2 = 20*log10(2*A*tol/T)+20*log10(abs(1./(pi*f2*tol)));
%当1/(π*τ)<f<1/(π*Tr),y2=20lg(2τA/T)+20lg(1/(π*f*τ)),斜率-20dB/10倍频程
%y2与y1的交点是1/(π*τ)
f3 = linspace(1/(pi*Tr),N*f0,1000);
y3 = 20*log10(2*A*tol/T)+20*log10(abs(1./(pi*f3*tol)))+20*log10(abs(1./(pi*f3*Tr)));
%当f>>1/(π*Tr),y2=20lg(2τA/T)+20lg(1/(π^2*f^*τ*Tr)=20lg(2τA/T)+20lg(1/(π*f*τ))+20lg(1/(π*f*Tr),斜率-40dB/10倍频程
%y3与y2的交点是1/π*Tr
%% 绘图
figure
set(gcf,'Color',,'outerposition',get(0,'screensize'));
plot(f_db, dB_S_env+100, 'r:');
hold on;
stem(x_db,dB_val_discrete+100,'MarkerEdgeColor','g','MarkerFaceColor','g','MarkerSize',2);
plot(20*log10(f1),100+y1,'m', 'LineWidth', 2);
plot(20*log10(f2),100+y2,'m', 'LineWidth', 2);
plot(20*log10(f3),100+y3,'m', 'LineWidth', 2);
axis();
hold off;
xlabel('对数频率');% X轴标签
ylabel('对数幅度');% Y轴标签
本帖最后由 xieeyawen 于 2025-6-6 10:48 编辑
https://matlab.mathworks.com/在线仿真太方便了
https://x9nahn.smartapps.baidu.com/ matlab的类似deepseek的学习网站 1 2 3 4 5 如果波形不是50% 怎么修改
页:
[1]