当前位置: 首页 > news >正文

长沙网站开发公司湖南产品网络营销推荐咨询

长沙网站开发公司,湖南产品网络营销推荐咨询,网架球加工厂家,php个人网站自建的离散傅里叶变换matlab程序实现及其与matlab自带函数比较举例 在matlab中有自带的离散傅里叶变换程序,即fft程序,但该程序是封装的,无法看到源码。为了比较清楚的了解matlab自带的实现过程,本文通过自建程序实现matlab程序&…

自建的离散傅里叶变换matlab程序实现及其与matlab自带函数比较举例

在matlab中有自带的离散傅里叶变换程序,即fft程序,但该程序是封装的,无法看到源码。为了比较清楚的了解matlab自带的实现过程,本文通过自建程序实现matlab程序,并与matlab自带的fft进行比较计算。

一、离散傅里叶变换的计算公式

在计算离散傅里叶变换的时候,通常会用到:
{ X ( k ) = ∑ n = 1 N [ x ( n ) ⋅ exp ⁡ ( − i ⋅ 2 π ( k − 1 ) ( n − 1 ) N ) ] s . t . { 1 ≤ k ≤ N } (1) \left\{ \begin{array}{l}X(k) = \sum\limits_{n = 1}^N {[x(n) \cdot \exp ( - i \cdot 2\pi \frac{{(k - 1)(n - 1)}}{N})]} \\s.t.\{ 1 \le k \le N\} \end{array} \right. \tag1 X(k)=n=1N[x(n)exp(i2πN(k1)(n1))]s.t.{1kN}(1)进行求解。
但有时会遇到所求解的向量长度N和变换过程中的长度K,大小不同。此时,会遇到 N ≤ K N\le K NK的情况,和N>K的两种情况。

(1) 当 N ≤ K N\le K NK时,则需要对向量 x x x补零后,再离散傅里叶变换计算。计算公式为:

{ X ( k ) = ∑ n = 1 N p a d d e d [ x ( n ) ⋅ exp ⁡ ( − i ⋅ 2 π ( k − 1 ) ( n − 1 ) N p a d d e d ) ] s . t . { 1 ≤ k ≤ N p a d d e d } (2) \left\{ \begin{array}{l}X(k) = \sum\limits_{n = 1}^{{N_{padded}}} {[x(n) \cdot \exp ( - i \cdot 2\pi \frac{{(k - 1)(n - 1)}}{{{N_{padded}}}})]} \\s.t.\{ 1 \le k \le {N_{padded}}\} \end{array} \right. \tag2 X(k)=n=1Npadded[x(n)exp(i2πNpadded(k1)(n1))]s.t.{1kNpadded}(2)
易知: N ≤ N p a d d e d = K N \le {N_{padded}}=K NNpadded=K.

(2) 当N>K时,,则需要对向量 x x x截断后,再离散傅里叶变换计算。计算公式为:

{ X ( k ) = ∑ n = 1 N t r u n c a t e d [ x ( n ) ⋅ exp ⁡ ( − i ⋅ 2 π ( k − 1 ) ( n − 1 ) N t r u n c a t e d ) ] s . t . { 1 ≤ k ≤ N t r u n c a t e d } (3) \left\{ \begin{array}{l}X(k) = \sum\limits_{n = 1}^{{N_{truncated}}} {[x(n) \cdot \exp ( - i \cdot 2\pi \frac{{(k - 1)(n - 1)}}{{{N_{truncated}}}})]} \\s.t.\{ 1 \le k \le {N_{truncated}}\} \end{array} \right. \tag3 X(k)=n=1Ntruncated[x(n)exp(i2πNtruncated(k1)(n1))]s.t.{1kNtruncated}(3)
易知: N > N t r u n c a t e d = K N > {N_{truncated}}=K N>Ntruncated=K.

二、基于上述理论编写myfft函数(matlab编程)

将自建的离散傅里叶变换的函数命名为myfft,编写程序如下:

function X=myfft(x,K)
% myfft函数根据傅里叶变换公式编写的离散傅里叶变换程序
% 输入
%     x:向量x
%     K: 变换后的向量X的长度% 输出
%    X: 经过傅里叶变换得到的向量% 变换依据:
% 对于长度为N的输入向量x,其离散傅里叶变换是长度为N的向量X,其具有元素:
%                    N
%      X(k) =       sum  x(n)*exp(-j*2*pi*(k-1)*(n-1)/N), 1 <= k <= N.
%                   n=1
%  myfft(x,K) 是一个K点的FFT,如果x小于K点,则补零后进行傅里叶变换;如果x大于K点,则截断后傅里叶变换。%  by zddh and zsm
%  2023.10.24N=length(x)%% 1.如果x小于K点,补零运算
if N<=Kx_padded=[x,zeros(1,K-N)];   %补零N_padded=length(x_padded);   %补零后的长度X=zeros(1,N_padded);         
for k=1:Kfor n=1:N_paddedtemp1=x_padded(n)*exp(-i*2*pi*(k-1)*(n-1)/N_padded);X(k)=X(k)+temp1;end
end
%% 2.如果x大于K点,则截断计算
elsewarning('K值小于N,则截断后进行傅里叶变换')
x_truncated=x(1:K);
N_truncated=length(x_truncated);
X=zeros(1,N_truncated)
for k=1:Kfor n=1:N_truncatedtemp2=x_truncated(n)*exp(-i*2*pi*(k-1)*(n-1)/N_truncated);X(k)=X(k)+temp2;end
end
end

三、自建的函数和matlab自带函数比较举例

(1) 编写程序

clc
clear all
close all
%% 1.构造将要变换的向量
dt=0.1
t=0:dt:10*pi;
x=sin(t)
N=length(x);
figure(1)
plot(t,x,'lineWidth',2)%% 2.自建的离散傅里叶变换求解
K=200
X=myfft(x,K)
%% 3.matlab自带函数求解
X0=fft(x,K)%% 4.比较
D_value=X-X0;figure(2)
subplot(211)
plot(abs(X),'LineWidth',2)
hold on
plot(abs(X0),'LineWidth',2)
legend('myfft','matlabfft')
title('自建myfft和matlab自带函数fft比较')subplot(212)
plot(abs(D_value),'LineWidth',2)
title('|X-X0|')

(2)运行结果

图1 生成的x向量
图1 生成的x向量

图2 使用两种方法结果比较
图2 使用两种方法结果
通过对图2两个子图观察比较可知,本文所编写的myfft函数和matlab自带的fft函数之间的误差非常小,在 1 0 − 12 10^{-12} 1012量级,同时验证了程序的理论公式(1)、(2)和(3).

http://www.15wanjia.com/news/181142.html

相关文章:

  • 对电子商务网站建设和管理的理解做网站域名选择
  • 怎么介绍网站的优缺点wordpress千万级访问
  • 网站页面锚点怎么做网站建设 搜狐号
  • 做论坛网站能赚钱吗wordpress post下载
  • 网站上怎么做动画广告提供服务好的网站建设
  • 做美食的网站wordpress主题代码框架
  • 什么是网站静态页面做落地页的网站
  • 微信小号自助购买网站12306网站为什么做不好
  • 化工行业网站建设部网站信息系统
  • 做企业网站有什么好处建设银行曲江支行网站
  • 淄博百度网站wordpress栏目列表页
  • 四川网站建设公司 会员登录35网站建设
  • 万网注册的网站长时间不能访问是不是被封了水库信息化网站建设
  • 网站的301重定向怎么做哪些网站平台可以做推广
  • 凡科二级网站怎么做吐鲁番seo快速排名
  • 企业网站制作规划什么叫网页版微信
  • 如何建立虚拟架构网站网站建设域名怎么选择
  • 做简报的网站国外平面设计
  • 工程公司取名大全手机网站seo教程
  • 东莞网站设计师上海网站建设电话
  • 网站开发建设技术特点招商加盟项目推荐
  • 企业网站的域名是该企业的什么汕头网页建站模板
  • 黄山家居网站建设怎么样网站开发维护合同模板电子版
  • 开发一个网站的成本茂名住房证书城乡建设局官方网站
  • 企业网站管理系统课设网站开发合同 黑客攻击条款
  • 哪个网站做图片外链定制开发app
  • 公司网站开发交接注意事项php网站开发if的代码
  • 设计师的网站有哪些王烨画家简历
  • 中国著名的网站建设公司四川住房和城乡建设厅官方网站
  • 沙朗镇做网站公司企业邮箱要收费的吗