参考与平台
书籍《信号与系统》
matlab2016a
简介
信号与系统的频谱分析就是将信号与系统的时域表征经过傅里叶变换转换到频域表征,通过幅度频谱和相位频谱,可以获得信号与系统在频域的分布特性,使我们从频域的角度获得对信号与系统的性质更加深入与具体的了解。
在Matlab中求解时域信号的傅立叶变换常用函数QUADL实现:
调用格式:
Q= QUADL(F, A,B,[ ],[ ],P)
函数QUADL可以实现F函数的积分运算,F为一个字符串,它表示被积函数的文件名。A,B分别表示定积分的下限和上限,[]为空表示积分递归过程中的绝对误差选用默认值(默认值为1x10-6),P表示被积函数加粗样式中的一个参数,对每个P值计算一次积分。
exemple
分析三角波信号的傅立叶变换信号 f (t) = (1- |t| ),(-1≤t ≤1)
step1
因为我们使用的函数QUADL()中的F是被积函数的文件名,所以要新建一个 .m文件 专门定义一个函数,按照注释的格式来进行定义,可以参考这个链接
function y = sf1(t,w)
y = (t>=-1 & t<=1).*(1-abs(t)).*exp(-1i*w*t);
end
%function [ output_args ] = Untitled2( input_args )
%UNTITLED2 此处显示有关此函数的摘要
% 此处显示详细说明
%end
notice
文件名要与函数名一致,这里的文件名为sf1
step2
再另建一个.m文件
w = linspace(-6*pi,6*pi,512);
N=length(w);
F=zeros(1,N); %生成一个1行N列的全零矩阵
for k=1:N
F(k)=quadl('sf1',-1, 2, [],[], w(k));
end
figure(1);
plot(w,real(F));
xlabel('\omega');
ylabel('F(j\omega)');
figure(2);
plot(w,real(F)-sinc(w/2/pi).^2);
xlabel('\omega');
title('计算误差');
输出
由图知这个三角波的傅里叶变换是一个Sa(w)函数,而计算误差也在可控的范围之内。