哪位好心人提供一个256点的FFT算法源程序给我呢?急用,拜托拜托!!! 25

可以给我C语言的嘛?我是ARM里面要用的,不是MATLAB,谢谢啊··... 可以给我C语言的嘛?我是ARM里面要用的,不是MATLAB,谢谢啊·· 展开
 我来答
zelongwei
2011-04-07 · TA获得超过259个赞
知道小有建树答主
回答量:192
采纳率:0%
帮助的人:125万
展开全部
function [PW,AW,f,Ph]=cftbyfft(wt,t,flag)
%cftbyfft.m
%连续函数的傅立叶变换
%本程序完成快速傅立叶变换,具体说明参看《精通matlab6.5》p174例题4.13.3.2-1的cftbyfft.m程序
%在原程序基础上增加了基二算法;增加了使“小”复数强制为0(参看《精通matlab6.5》p172
%例题4.13.2.3-3的fzzyfft.m程序<23>行
%本程序需要输入的参数为时间波形数据(wt,t)即测试结果向量wt,对应的时间坐标向量t;选择输入flag确定程序显示的图形
%注意:本程序计算的幅值谱很准确,但是相位谱非常不准,故输出数据建议取AW和f,相位Ph舍弃
if nargin==2;flag=0;end %采样频率为fs=N/T; flag=0,画出半功率范围图[0,fs/2],即为有效频率分析范围(采样定理)单边谱,幅值AW乘以2
%flag=1,画出对称频率范围的图[-fs/2,+fs/2],幅值AW为原始值
%flag=2,;画出整个频率范围的图[0,fs],幅值AW为原始值;
N=length(t); %
T=t(length(t))-t(1); %
dt=T/(N-1); %
NFFT=2^nextpow2(N); %基二算法
if N<NFFT;T=T*(NFFT-1)/(N-1);N=NFFT;end
W0=fft(wt,N); %该指令得到的W0经过反变换,即ifft(W0)可得到原时间波形
W=dt*W0; %
z_W=find(abs(W)<1.0e-10); %寻找有限字长运算产生的“小”复数
W(z_W)=zeros(length(z_W),1); %强制那些小复数恢复为0
df=1/T; %
n=0:1:(N-1);

%下面计算幅值谱和相位谱
if flag==0
n=0:(N/2-1);
W=2*W(1:N/2);
elseif flag==1
n=-N/2:(N/2-1);
W=fftshift(W);
else
n=0:(N-1);
end
f=n*df; %频率
AW=abs(W); %模的幅值
PW=W.*conj(W); %功率谱
Ph=angle(W); %相位(由于相位非常不准,建议不用)

if nargout==0 %调用cftbyfft函数时不要求输出数据
figure(2)
plot(f,AW);grid,xlabel('频率f');ylabel('幅值谱|w(f)|')
figure(3)
plot(f,Ph);grid,xlabel('频率f');ylabel('相位谱Ph')
figure(4)
plot(f,PW);grid,xlabel('频率f');ylabel('功率谱密度函数PDF')
end
Matlab编的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
我是灰太郎大王
2011-04-07
知道答主
回答量:5
采纳率:0%
帮助的人:7159
展开全部
有c语言的么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式