声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1151|回复: 3

[综合讨论] 如何将ADC输出的讯号还原为正弦波

[复制链接]
发表于 2008-6-10 23:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
翻遍了很多书籍,及上网搜询资料都找不到相关资讯,恳请高手指点迷经,谢谢
回复
分享到:

使用道具 举报

 楼主| 发表于 2008-6-11 13:29 | 显示全部楼层
我的目的是要把一个adc讯号做频谱分析
所以我想先把数位讯号转回sin波
再将sin波转成频谱图
怎麽还原成SIN波我还是不太懂
希望有高手指点
但我有找到一篇由jiacrack所写的文章是把序列点直接转成频谱图的

http://forum.vibunion.com/thread-25039-1-13.html

x=load('data1.txt');
X=fft(x);
y=abs(X);
plot((0:517)*2000/1024,y(1:518))
grid on
for i=1:1024
pm=max(abs(data1(i,:)));
y(i,:)=data1(i,:)/pm;
p=fft(y);
plot((0:517)*2000/1024,p(1:518))
grid on
我想请问:
1.其中第四行程式及倒数第二行 plot((0:517)*2000/1024,y(1:518)) 这里的517数值是怎麽算来的?
  我把他改为 plot((0:1024)*2000/1024,y(1:1025)) 时,执行程式会出现错误,又是为什麽?
2.这个程式模拟出的频谱图中,他的X轴单位是什麽,我如果要自订高度话,程式该如何修改呢?
  我是MATLAB新手,有许多不明嘹的地方,请大家多多包函,谢谢
发表于 2008-6-11 15:09 | 显示全部楼层
1) 517是y的长度  可以用size获取长度

2) 不了解
 楼主| 发表于 2008-6-11 16:49 | 显示全部楼层
既然只是y轴长度,那我改为1024为什麽会出现错误呢?

我现在有一笔32768的adc输出资料
采样频率为128k
我依照jiacrack所写的程式将我的数据套入
程式如下
x=load('z.txt');
X=fft(x);
y=abs(X);
plot((0:517)*128000/32768,y(1:518))
grid on
for i=1:32768
pm=max(abs(z(i,:))); y(i,:)=z(i,:)/pm;
p=fft(y);
plot((0:517)*128000/32768,p(1:518))
grid on

但跑出来的频谱很怪,跟实际用示波器量出的频谱图很有差距,我不知道该怎麽改?恳请高人指点!
p.s我的adc资料超过200k,所以分z(1)及z(2)两笔上传 z(1).txt (150.95 KB, 下载次数: 6)
z(2).txt (142.55 KB, 下载次数: 6)
aaa.jpg

[ 本帖最后由 TJ球 于 2008-6-11 17:23 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 14:32 , Processed in 0.054629 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表