Pole 发表于 2008-12-14 16:05

脉冲信号

采集一脉冲信号得到如图所示,只有脉冲信号的零线一下部分,
如何恢复为正常的脉冲信号

hcharlie 发表于 2008-12-14 16:30

回复 楼主 Pole 的帖子

采样的负(或正)数据溢出了,这个数据无法恢复,只有在正确编码情况下重新采集了。

Pole 发表于 2008-12-14 17:59

回复 沙发 hcharlie 的帖子

我发现应该就是大于 128的数据全部被置为 2^32,
所谓的采样的溢出可能是那些引起的呢 ??如何避免?

因为使用的VC采集+处理,所以比不上matlab对于信号处理方面的功能强大。。。
不管对于脉冲 正弦 白噪 重新采集 都是这个结果

hcharlie 发表于 2008-12-14 18:30

回复 板凳 Pole 的帖子

我不知道你怎样用VC采集的,无法具体回答。
如果你定义的数据类型(如byte,integer,unsigned integer。。。)与你的实际数据类型不一致就可能溢出。也许还有别的原因。

hcharlie 发表于 2008-12-14 19:05

在C语言中:
char    -128~+127
unsigned char   0~255
可能你的原来的数据是unsigned char 格式,放到 char 里,大于等于128的都要溢出了。

Pole 发表于 2008-12-14 22:01

回复 地板 hcharlie 的帖子

谢谢指点

我研究了一下,
我将缓冲区中的数据无符号化传给数组就会出现2^32,
但是我直接将缓冲区数据传给数组就不会出现,但是得到的图形却不再是一个脉冲了。。。。

Pole 发表于 2008-12-14 22:07

回复 5楼 hcharlie 的帖子

对,我才想起来!没有把之前看的书融会贯通。。。。。。


非常谢谢
我再研究一下。

Pole 发表于 2008-12-15 10:29

回复 5楼 hcharlie 的帖子

将 unsigned 改为 unsigned int 即可

谢谢指点。。。

hcharlie 发表于 2008-12-15 10:57

恭喜你。
如果128是另点,你还需要变换成有符号型:
unsigned int aaa;
int bbb;
for(int i=0;i<1000;i++) bbb=aaa-128;

[ 本帖最后由 hcharlie 于 2008-12-15 17:17 编辑 ]

Pole 发表于 2008-12-15 12:25

回复 9楼 hcharlie 的帖子

对,我已经变零线了
这样看上去就舒服多了。。。
页: [1]
查看完整版本: 脉冲信号