如何用matlab产生一组数组,这组数组将作为c编的FFT程序(单片机上)的输入部分。

如何用matlab产生一组数组,这组数组将作为c编的FFT程序(单片机上)的输入部分。,第1张

% 是单频率信号还是带有谐波的信号啊?以下是matlab程序,产生信号数据

fs=2500% 你给的100ms换算成采样频率是10HZ,这不符合采样定理,建议提高采样频率

f=50

N=256

n=1:N

t=(n-1)/fs

Am= [30.6 6 15 5 10 18]% 这个是幅值,如果是单频率,一个数即可

PH= [60 30 90 90 90 90]% 这个是相位,如果是单频率,同上

m = 6% 如果是单频率 取 1

x=zeros(1,N)

PH = PH/180*pi% 如果给的是角度,需要换算成弧度

for k=1 : m

x=x+Am(k)*cos(2*pi*f*k*t+PH(k))% x就是信号采样后的数据,就是你需要的FFT输入数据

end

将一个声音信号输入到单片机里面,可以通过麦克风,通常小小的那种咪头(耳机线常佩戴的)那种就可以,它的输出是电压量(声音信号--电信号),你可以用单片机去采样/或者AD芯片对其采样再把数据送个单片机进行处理,单片机内部的处理就可以说是跟matlab里面的处理类似了,而且都是用c语言的,相信很容易上手,祝好运。

比如做64点的,采样频20K,频率分辨为20K/64=312

所以第一个点是312* 0HZ

第二个点是 312*1HZ

第三个点是 312*2HZ

.......

FFT后应该是各个频率的幅值的吧,如果你的信号频率集中,幅值最大的对应的点的频率就相近你要求的频率

51单片机是不是太慢了或存不下数据。。求程序参考。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7789048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存