⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dm09201.m

📁 matlab各种周期信号的频谱分析matlab各种周期信号的频谱分析。
💻 M
字号:
% dm09201
% 绘制周期信号的频谱特性
function  CTFS_RP
%  以周期矩形脉冲信号为例,计算其频谱特性
%  Nf:级数分解的谐波次数,由键盘输入
%  Nn:输出数据的准确位数
%  a0:直流项系数
%  an:第1,2,3,...次谐波余弦项展开系数
%  bn:第1,2,3,...次谐波正弦项展开系数
%  tao:周期矩形脉冲信号脉宽,由键盘输入
%  T:周期矩形脉冲信号周期,由键盘输入
display('Please input the value of T, tao and Nf');   %命令窗口提示用户输入参数
T = input('T = ');
tao = input('tao = ');
Nf = input('Nf = ');
syms t n k x                                          %定义符号变量
Nn = 32;                                              %输出数据的位数为32位
an = zeros(Nf+1,1);                                   %分配an系数数组
bn = zeros(Nf+1,1);                                   %分配bn系数数组
phase = zeros(Nf+1,1);                                %分配相位数组
s1 = strcat('Heaviside(t+',num2str(tao/2),')');       %构造u(t+tao/2)
s2 = strcat('Heaviside(t-',num2str(tao/2),')');       %构造u(t-tao/2)
x = sym(s1) - sym(s2);                                %构造一个周期的脉冲信号u(t+tao/2)-u(t-tao/2)
A0 =2*int(x,t,-T/2,T/2)/T;                            %求出直流项a0
As=2*int(x*cos(2*pi*n*t/T),t,-T/2,T/2)/T;             %求出余弦项系数an
Bs=2*int(x*sin(2*pi*n*t/T),t,-T/2,T/2)/T;             %求出正弦项系数bn
an(1) = double(vpa(A0,Nn));                           %获取参数组A0所对应的ASCII码数值数组
for k=1:Nf
an(k+1)=double(vpa(subs(As,n,k),Nn));                %获取参数组As所对应的ASCII码数值数组
bn(k+1)=double(vpa(subs(Bs,n,k),Nn));                %获取参数组Bs所对应的ASCII码数值数组
end 
cn = sqrt(an.*an+bn.*bn);                            %计算幅度谱
for i = 1:Nf                                         %由于bn=0,相位由an的符号决定为0或pi
    if an(i) >= 0
        phase(i) = 0;
    else
        phase(i) = pi;
    end
end
t = -T*5:0.001:T*5;
d = -T*5:T:T*5;
xx = pulstran(t,d,'rectpuls',tao);                  %用pulstran函数生成矩形脉冲信号
subplot(311);                                       %将显示窗口分为3个子窗口,并指向第1个子窗口
plot(t,xx);                                         %绘制周期矩形脉冲信号
axis([-T*5 T*5 0 1.1]);                             %指定坐标系范围
%title('周期矩形脉冲信号','Fontsize',8);            %标注标题
s1 = strcat('周期矩形脉冲信号  T=',num2str(T),'  Tao=',num2str(tao),'t');  
xlabel(s1,'Fontsize',8);                            %x轴标签
subplot(312);                                       %指向第2个子窗口
k = 0:Nf;
stem(k,cn);                                         %绘制幅度谱
hold on;
plot(k,cn);                                         %绘制幅度谱包络线
xlabel('幅度谱  \omega','Fontsize',8);        
subplot(313);                                        %指向第3个子窗口
stem(k,phase);                                       %绘制相位谱
xlabel('相位谱  \omega','Fontsize',8);        
% End

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -