如何用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

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

所以第一个点是312* 0HZ

第二个点是 312*1HZ

第三个点是 312*2HZ

.......

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

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


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存