TJ球 发表于 2008-6-10 23:21

如何将ADC输出的讯号还原为正弦波

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

TJ球 发表于 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新手,有许多不明嘹的地方,请大家多多包函,谢谢

sigma665 发表于 2008-6-11 15:09

1) 517是y的长度可以用size获取长度

2) 不了解

TJ球 发表于 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)两笔上传



[ 本帖最后由 TJ球 于 2008-6-11 17:23 编辑 ]
页: [1]
查看完整版本: 如何将ADC输出的讯号还原为正弦波