📄 t2f.m
字号:
% 频谱分析 %
%**********%
%初始化频谱分析参数及信号参数%
T=10e-6; %设定信号周期
f0=1/T; %求取信号频率
Fmax=300e6; %对于该信号,我们想要分析的最高目标频率
N=max([2*2^ceil(log2(Fmax*T)),128]); %N的确定
fs=N/T; %采样频率的确定
%采样时间的确定
n=0:1:N-1;
t=n/fs;
%周期性信号的函数描述(单周期)%
%函数参数定义
k1=5e8; %信号上升速率
tr=1e-6; %信号上升时间
k2=50; %震荡幅度
toff=4e-6;%信号关断时间
t0=2e-6; %振荡时间
w=2e6;%振荡频率
k3=5e8; %信号下降速率
tf=1e-6; %信号下降时间
%周期性信号的分段描述
nr=t<=tr;
xr=k1*t.*nr;
noff=tr<t&t<=tr+toff;
xoff=(k1*tr+k2*exp(-4.6/t0*(t-tr)).*sin(w*(t-tr))).*noff;
nf=t>tr+toff&t<=tr+toff+tf;
xf=(k1*tr+k2*exp(-4.6/t0*toff)*sin(w*toff)-k3.*(t-tr-toff)).*nf;
x=xr+xoff+xf;
%生成信号时域波形
figure(1);
subplot(221);
plot(t,x);
xlabel('时间(s)');
axis([0,T,-inf,inf]);
ylabel('幅度(V&A)');
title('信号时域波形');
grid;
%进行FFT变换并作频谱图%
y=fft(x); %进行FFT变换
f=(n(1:N/2)-1)*f0; %频率范围
%幅度
mag1=abs(y); %求幅值
mag=mag1(1:N/2)/N*2;
ln=20*log10(mag)+120; %求对数谱
%显示对数谱
subplot(222);
semilogx(f,ln);
xlabel('频率(Hz)');
axis([0,fs/2,-inf,inf]);
ylabel('对数谱(dBu)');
title('频谱图')
grid
%相位
ang1=angle(y)*360/2/pi;
ang=ang1(1:N/2);
%显示相位
subplot(224);
semilogx(f,ang);
xlabel('频率(Hz)');
axis([1/T,fs/2,-inf,inf]);
ylabel('相位(度)');
title('相位图');
grid;
%用IFFT恢复原始信号%
xifft=ifft(y); %恢复信号
%显示恢复信号
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
subplot(223);
plot(ti,magx);
xlabel('时间(s)');
axis([0,T,-inf,inf]);
ylabel('幅度(V&A)');
title('恢复时域波形');
grid;
%结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -