浅学一维傅里叶变换【下一章发布 : 快速二维傅里叶变换FFT、快速二维傅里叶逆变换IFFT】

程序代码如下:

clear
%对数列:1,2,4,4进行傅里叶变换
y1 = [1 2 4 4];
[fy1,sumY1] = Fourier2(y1);
%对函数:y = sin(x)进行傅里叶变换
y2 = @(x) sin(x);
[fy2,sumY2] = Fourier2(y2,1,0,10);
%对数列:1,2,4,5,6,7,8,9进行傅里叶变换
y3 = [1 2 3 4 5 6 7 8 9 ];
[fy3,sumY3] = Fourier2(y3);
%对函数:y = sin(x)-cos(x)进行傅里叶变换
y4 = @(x) sin(x)-cos(x);
[fy4,sumY4] = Fourier2(y4,1,0,10);

程序运行图如下:

1、对变量的截图

在这里插入图片描述

1、对 y = [1 2 4 4]进行离散傅里叶变换

在这里插入图片描述

2、对 y = sin(x)进行离散傅里叶变换

在这里插入图片描述

3、对 y = [1,2,4,5,6,7,8,9]进行傅里叶变换

在这里插入图片描述

4、对 y = sin(x)-cos(x)进行傅里叶变换

在这里插入图片描述

自写函数代码如下

function [fy,sumY] = Fourier2(y,dx,xLeft,xRight)
%一维离散傅里叶变换
%该函数是用于输入一个 函数 或 列向量 即y ,将y傅里叶变换后输出
%fy是y的离散傅里叶变换,sumY是fy的零频,即y的各个数相加
%此函数输出y傅里叶变换后的1、实部2、幅值3、相位

% 创建命名函数的函数句柄:
% fy = @myfun
% 创建匿名函数的函数句柄:
% fxy = @(x,y) x.^2 + y.^2;
if length(y) ==1
    x = xLeft:dx:xRight;
    y = y(x);
    fy = y;
else
    x = 0:1:length(y)-1;
end  
for x1 = 0:length(y)-1
   temp = 0;
   for x2 = 0:length(y)-1
       temp = temp + y(x2+1)*exp(-1j*2*pi*x1*x2/length(y));
   end
   fy(x1+1) = temp;
end
sumY = sum(y(:));
figure
subFigure = 3;
subplot(2,subFigure,1),plot(x,y,"red",'LineWidth',1.5),title("原函数连续图");
subplot(2,subFigure,2),stem(x,y,"red",'LineWidth',1.5),title("原函数离散图");
subplot(2,subFigure,4),stem(x,real(fy),"red",'LineWidth',1.5),title("傅里叶变换后实部图");
subplot(2,subFigure,5),stem(x,abs(fy),"red",'LineWidth',1.5),title("傅里叶变换后幅值图");
subplot(2,subFigure,6),stem(angle(fy),"red",'LineWidth',1.5),title("傅里叶变换后相位图");
end
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Free God

随缘

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值