matlab求振动信号信息熵?

matlab求振动信号信息熵?,第1张

题主给出的用matlab求振动信号信息熵的代码有下列几个问题:

1、shannon=-sum(x.*log2(x)),该代码不能写在for循环中,因为sum是求和命令,其要求x为数值向量

2、循环语句中 x=b(i)/sum(b) ,该代码最后的得到结果是一个x数值,并没有得到一组数值向量,所以该循环应这样来写

for i=1:3072

x(ⅰ)=b(i)/sum(b)

end

3、为了帮你理解,你可运行下列代码,就可以发现,他们的区别。

A=1:10

for i=1:10,x=A(i)/sum(A)end,x

for i=1:10,x(i)=A(i)/sum(A)end,x

(1)先用Hist函数对x(n)的赋值范围进行分块,比如赋值范围在0~10的对应第

一块,10~20的第二块,以此类推。这之前需要对x(n)做一些归一化处理

(2)统计每一块的数据个数,并求出相应的概率

(3)用信息熵公式求解

以上求解方法获得的虽然是近似的信息熵,但是一般认为,这么做是没有问题的

求一维序列的信息熵的matlab程序代码如下:(已写成调用的函数形式)

测试程序:

fs=12000

N=12000

T=1/fs

t=(0:N-1)*T

ff=104

sig=0.5*(1+sin(2*pi*ff*t)).*sin(2*pi*3000*t)+rand(1,length(t))

Hx=yyshang(sig,10)


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存