声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2041|回复: 12

[综合] 新的signal processing (信号处理)方法

[复制链接]
发表于 2007-8-14 18:21 | 显示全部楼层 |阅读模式

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

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

x
新的signal processing (信号处理)方法
先问问题:
如果现在有一段signal (信号), 名为 s(j)=sin(0.5j).
先试将s(j) 乘以sin(0.1j), 即问  Σsin(0.5j)*sin(0.1j) 的值是多少?
再将s(j) 乘以sin(0.3j), 即问  Σsin(0.5j)*sin(0.3j) 的值是多少?
再将s(j) 乘以sin(0.5j), 即问  Σsin(0.5j)*sin(0.5j) 的值是多少?
好了, 大家应该了解, Σsin(0.5j)*sin(0.1j) 和Σsin(0.5j)*sin(0.3j) 都是一个很少的数字,
但是  Σsin(0.5j)*sin(0.5j) 却是一个很大很大的数字.
这是其中一种计算机用来侦测出unknown signal (未明信号)的方法.
例如给予未明信号 sin(0.47j), 但假设我们不知道中间的数字是0.47,
我们可以用计算机将sin(0.01j), sin(0.02j), sin(0.03j), … 不停地乘以未明信号那里,
直到0.47时, 乘出的数值将会极大,令我们知道未明信号中间的数字是0.47.
当然,现在可以用matlab中的command – spectrum代劳, spectrum可以成功侦测出未明信号.

以下是将s(j)=sin(0.47j) 放在spectrum的图:

s(j)=sin(0.47j),   j=1,2,3,…,100.

dt=1/(2π)

在matlab 写下:

[p,f]=spectrum(s,max(size(s)),0,hanning(max(size(s))),1/dt);

plot(f,p(:, 1));



                               
登录/注册后可看大图


现在假设 s(j)=sin(0.5j), s(j) 是永远限制在 -1至1之间,

我们用matlab 在-1至1之间产生大量random data: n(j), 即 -1≤n(j) ≤1.
设定 r(j)=n(j)+0.1*s(j), 比较一下 spectrum of n(j) 和 spectrum of r(j) 的分别.
以下是n(j) 图:

                               
登录/注册后可看大图



以下是r(j) 图:


                               
登录/注册后可看大图



以下是spectrum of n(j) 图:


                               
登录/注册后可看大图



以下是spectrum of r(j) 图:


                               
登录/注册后可看大图



我们可以看见即使0.1*s(j) 的体积只有 n(j) 的十分之一, spectrum 也可以侦测出来.



我们再用spectrum去侦测r=n+0.09*s, r=n+0.08*s, r=n+0.07*s,

可以见到随s的数值越少, spectrum越无法侦测出signal s.



以下是spectrum of r(j)=n(j)+0.09*s(j) 图:


                               
登录/注册后可看大图



以下是spectrum of r(j)=n(j)+0.08*s(j) 图:


                               
登录/注册后可看大图



以下是spectrum of r(j)=n(j)+0.07*s(j) 图:


                               
登录/注册后可看大图


现在知道了随s的数值越少, spectrum越无法侦测出 s,

我们现在就试验增加一些方法, 令即使随s的数值减少, spectrum也可以侦测出 s.
最重要的地方开始了, 我们定义一个本方法最重要的函数g:

                               
登录/注册后可看大图


以后不会直接用spectrum去侦测信号r, 而是先把r输入函数g里面, 才用spectrum侦测.

也就是说, 我们是看spectrum of g(r), 而不是spectrum of r.

而且还可以把信号r输入函数g里面多次, 即是看spectrum of g(g(r)), spectrum of g(g(g(r))), …
假设s(j)=sin(0.5j), r(j)=n(j)+0.05*s(j).

比较一下spectum of r, spectum of g(r), spectrum of g(g(r)), … 的分别.
以下是spectrum of r(j)=n(j)+0.05*s(j) 图:


                               
登录/注册后可看大图



以下是spectrum of g(r) 图:


                               
登录/注册后可看大图



以下是spectrum of g(g(r)) 图:


                               
登录/注册后可看大图



以下是spectrum of g(g(g(r))) 图:


                               
登录/注册后可看大图



以下是spectrum of g(g(g(g(r)))) 图:


                               
登录/注册后可看大图



以下是spectrum of g(g(g(g(g(r))))) 图:


                               
登录/注册后可看大图



以下是spectrum of g(g(g(g(g(g(r)))))) 图:


                               
登录/注册后可看大图


以上图说明把信号r输入函数g里面次数越多, spectrum越可以把r中的s侦测出来.

但次数又不能太多, 如果把信号r输入函数g里面多过4次就会失效了.

为何会有这种现象?

以下内容全是估计,没有证明,只是把想法写出.

先假设s=sin(x), 观看s, g(s), g(g(s)), g(g(g(s))),… 的分别.
以下是sin(x) 的图:


                               
登录/注册后可看大图



以下是g(s) 的图:


                               
登录/注册后可看大图



以下是g(g(s)) 的图:


                               
登录/注册后可看大图

以下是g(g(g(s))) 的图:


                               
登录/注册后可看大图


如果把signal (信号) s输入函数g里面, 我们发现整个信号内全部数值均一齐减少,

但在数值减少的同时, wavelength (波长) 却没有改变,

也就是说在wavelength 不变而整个signal 数值下降的情形下,

wavelength 的值对于整个signal 的值是比例上升,

结果wavelength更容易被spectrum侦测出.

重申以上内容全属估计,没有证明的.

以下是g(g(g(s))) 的图, 可以看出当signal输入函数g后, wavelength不变:


                               
登录/注册后可看大图


如想多了解这方法可以看此paper:
W.L. Lee, S.K. Tang, and C.M. Chan
Detecting weak sinusoidal signals embedded in a non-stationary random broadband noise—A simulation study Journal of Sound and Vibration
http://dx.doi.org/10.1016/j.jsv.2007.03.024

其它问题:

有没有办法自行创造一个新的函数, 例如f,

令到我们把质数输入函数f时得出1,

把合成数输入函数f时得出0?

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2007-8-20 14:59 | 显示全部楼层
这个不错,顶一下,让更多的人看到.
发表于 2007-8-20 22:11 | 显示全部楼层
好方法,楼主能否给一份该论文的文件?谢谢了!shenyongjun@sohu.com
发表于 2007-8-24 21:22 | 显示全部楼层
说到底还是频域上的滤波嘛,要是混响信号这样频域上差不多的还是没办法
发表于 2007-8-24 23:51 | 显示全部楼层
收到,谢谢楼主了!
发表于 2007-8-28 14:10 | 显示全部楼层
不对啊
怎么我按照给的信号试了以后得到到帖子里面图示的结果?
发表于 2007-8-28 14:23 | 显示全部楼层
我发现用randn产生噪声时,不能得到楼主所提结果
但是用rand产生噪声可以
 楼主| 发表于 2007-8-29 12:42 | 显示全部楼层
我也是在 matlab 用rand 而不是用 randn 的,
randn 的情况没有试过…………….

matlab 中的 rand 和 randn 有什么分别呢?
发表于 2007-8-29 13:38 | 显示全部楼层

回复 #8 wllee 的帖子

一个服从均匀分布,一个高斯分布.
help randn
help rand
 楼主| 发表于 2007-8-29 18:36 | 显示全部楼层
也就是说, 这个方法是不能在高斯分布所产生的噪声的环境之下进行侦测,
只可以在均匀分布所产生的噪声的环境之下进行侦测了. 不幸+失败…………
发表于 2007-8-30 13:52 | 显示全部楼层
不知道各位有沒有用過MathCAD軟件﹐用它做時域或頻域數據的處理比較快﹗
发表于 2007-8-31 11:34 | 显示全部楼层
我觉得可能对高斯分布的噪声确实不行
不过看他的那篇发表在JSV上的论文好像没提到这一点啊

[ 本帖最后由 xcsyb 于 2007-8-31 13:03 编辑 ]
发表于 2007-9-2 20:07 | 显示全部楼层

回复 #4 JulianChin 的帖子

能否解释一下混响信号?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-14 19:04 , Processed in 0.081664 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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