【周期函数实现】


前言

有朋友想画一个信号的模式图,问我能不能做一张周期函数的图片。
作为初学者,记录一下自己的学习过程。


一、周期函数

定义:对于函数y=f(x),如果存在一个不为零的常数T,使得当x取定义域内的每一个值时,f(x+T)=f(x)都成立,那么就把函数y=f(x)叫做周期函数,不为零的常数T叫做这个函数的周期。

二、使用步骤

1.代码实现

MATLAB代码如下(示例):

clc
clear

x =1;
line = zeros();

while x < 300
    if  0 < mod(x,32) && mod(x,32) <17 %控制周期
        y = sin(0.7854*x);
        line = [line,y];
        x = x+1;
    else
        y = 0;
        line = [line,y];
        x = x+1;
    end
end

x1 = [1:1:300];
figure();
ylim([-3,3]);%对Y轴设定显示范围 
xlim([1,300]);
hold on
plot(x1,line,'blue');

2.运行结果

请添加图片描述


总结

提示:这里对文章进行总结:
周期函数符合周期性的变化,本文主要通过取余函数来确定函数的周期,然后通过while函数进行循环。

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于一个周期为T的连续周期函数f(t),其傅里叶级数为: $$f(t)=\frac{a_0}{2}+\sum_{n=1}^{\infty}(a_n\cos{\frac{2\pi nt}{T}}+b_n\sin{\frac{2\pi nt}{T}})$$ 其中,$a_0$、$a_n$、$b_n$为傅里叶系数,可以通过函数f(t)求得。对于离散周期函数f(nT),其傅里叶级数为: $$f(nT)=\frac{1}{N}\sum_{k=0}^{N-1}F_k e^{j2\pi kn/N}$$ 其中,$F_k$为傅里叶变换后的频域系数,可以通过函数fft(f)求得,N为离散周期函数的长度。 对于周期函数的傅里叶逆变换,可以利用上述公式进行求解。对于连续周期函数,其傅里叶逆变换为: $$f(t)=\sum_{n=-\infty}^{\infty}c_ne^{j\frac{2\pi nt}{T}}$$ 其中,$c_n$为傅里叶系数,可以通过$a_n$、$b_n$求得: $$c_n=\begin{cases}\frac{a_n-jb_n}{2},n>0\\\frac{a_0}{2},n=0\\\frac{a_{-n}+jb_{-n}}{2},n<0\end{cases}$$ 对于离散周期函数,其傅里叶逆变换为: $$f(nT)=\frac{1}{N}\sum_{k=0}^{N-1}F_ke^{-j2\pi kn/N}$$ 下面是一个简单的示例代码,演示如何利用matlab实现周期函数的傅里叶逆变换: ```matlab % 设置周期函数的参数 T = 2*pi; t = linspace(-T/2,T/2,1000); f = square(t); % 计算傅里叶级数系数 N = 50; an = zeros(1,N); bn = zeros(1,N); for n = 1:N an(n) = (2/T)*trapz(t,f.*cos(n*t)); bn(n) = (2/T)*trapz(t,f.*sin(n*t)); end % 计算傅里叶逆变换 f_recon = zeros(1,length(t)); for n = -N:N cn = (an(abs(n)+1)-1i*bn(abs(n)+1))/2; f_recon = f_recon + cn*exp(1i*n*t*(2*pi/T)); end % 绘制原周期函数和重构周期函数 plot(t,f,'b',t,real(f_recon),'r'); legend('Original Function','Reconstructed Function'); ``` 这段代码首先定义了一个周期为$2\pi$的方波函数,然后利用傅里叶级数公式计算了前50个傅里叶系数。接着,利用傅里叶逆变换公式计算了重构周期函数,并绘制了原周期函数和重构周期函数的图像。可以看到,通过傅里叶逆变换,我们成功地将周期函数从频域转换回时域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值