russell 发表于 2007-11-13 10:51

请问如下算式在 matlab 中如何实现

请教高手,s是一个长度为4096的时间序列,fs为10kHz,对该序列求能量算子,如下公式,如何在Matlab中实现?或者该公式的离散形式如何?是x(n)*x(n)-x(n-1)*x(n+1)吗?fs如何处理?

[ 本帖最后由 eight 于 2007-11-15 11:36 编辑 ]

russell 发表于 2007-11-13 10:57

最终要计算信号S的包络谱,实现形式如下,

donkeyxu 发表于 2007-11-13 18:38

回复 #1 russell 的帖子

s数据给出来看看

russell 发表于 2007-11-14 10:52

数据

donkeyxu 发表于 2007-11-14 14:40

回复 #4 russell 的帖子

这些点按时间排序过了吗?
为什么根号下方会有负数?

[ 本帖最后由 donkeyxu 于 2007-11-14 15:19 编辑 ]

russell 发表于 2007-11-15 18:13

原帖由 donkeyxu 于 2007-11-14 14:40 发表 http://www.chinavib.com/forum/images/common/back.gif
这些点按时间排序过了吗?
为什么根号下方会有负数?
这些点是按时间排序的,
不好意思,公式弄错了,是这个

[ 本帖最后由 russell 于 2007-11-15 18:14 编辑 ]

donkeyxu 发表于 2007-11-15 18:58

回复 #6 russell 的帖子

%那就不清楚了还是有负数,你可以看看这个程序问题在哪
s=dlmread('Inner.txt');
s=s(1:end-3);dt=10^(-4);t=*dt;
s1=diff(s)/dt;s2=diff(s1)/dt;s3=diff(s2)/dt;
fi=s1(1:end-1).^2-s(1:end-2).*s2;
fis1=s2(1:end-1).^2-s1(1:end-2).*s3;
a=fi(1:end-1)./sqrt(fis1);
plot(t(1:end-3),a);

russell 发表于 2007-11-16 13:47

原帖由 donkeyxu 于 2007-11-15 18:58 发表 http://www.chinavib.com/forum/images/common/back.gif
%那就不清楚了还是有负数,你可以看看这个程序问题在哪
s=dlmread('Inner.txt');
s=s(1:end-3);dt=10^(-4);t=*dt;
s1=diff(s)/dt;s2=diff(s1)/dt;s3=diff(s2)/dt;
fi=s1(1:end-1).^2-s(1:end- ...
谢谢啊,
我好好看看,
离散差分导致数据变短,在跟原信号运算,直接去掉原信号后面的?妥当吗?

donkeyxu 发表于 2007-11-16 14:04

回复 #8 russell 的帖子

妥当
页: [1]
查看完整版本: 请问如下算式在 matlab 中如何实现