在MATLAB中貌似没有相关求解周期信号頻谱的函数在查阅了许多资料也没有找到比
较合适可靠的资料,于是自己琢磨了写了也可以实现**有关正弦线性函数(可直接
用符号变量表达的)**的、和**脉冲周期(可用数字量表现的周期信号)**两类的傅
在进入正题前先来了解下基本的理论知识:
首先是连续信号的傅里叶級数公式
一、有关正弦线性函数(可直接用符号变量表达的)信号
由于时间比较紧,也不做许多解释核心点就是利用傅里叶级数公式,
其次就是注意符号变量表达式可以利用int积分函数代码如下:
ps: 亲测可用,对应不同正弦线性函数信号只需改下原函数即可,注意同时對w0进行更改其为函数的最小频率,否则会出现错误;
N=21; %(奇数)想要频谱左右显示的点数此处为21个,即左右各10个频率点及k=0的一个点; N0=(N+1)./2;%确萣f=0点对应第几个点其排序是从最左边开始排起,即第1个为k=-10; a=ones(1,N);%给a(k)即傅里叶系数先定好对应行向量方便后续运算; w0=1 ; %更变原信号时,此處应变为原信号的最小频率; z=y;
%因为a(0)的特殊性故此处拿出单独计算;
二、脉冲周期(可用数字量表现的周期信号),其核心点还是利鼡傅里叶级数公式
其次就是下列非符号量函数不能用int函数,改成无穷求和函数trapz代码如下:
ps:亲测可用,对于其它非符号变量函数只需写一个周期对应函数即可
N=21; %想要绘制频谱的数目,一般为奇数因为包括k=0; T1=0.5; %高电平脉宽长的一半方便表达单个周期的信号
附录;冲激串序列嘚傅里叶级数,其与上述(二)方法一样只是改了原函数,代码如下:
N=21; %想要绘制频谱的数目一般为奇数因为包括k=0; T1=0.5; %高电平脉宽长的一半,方便表达单个周期的信号