声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1213|回复: 8

[编程技巧] 请问如下算式在 matlab 中如何实现

[复制链接]
发表于 2007-11-13 10:51 | 显示全部楼层 |阅读模式

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

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

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

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

能量算子

能量算子
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-11-13 10:57 | 显示全部楼层
最终要计算信号S的包络谱,实现形式如下,
2.bmp
发表于 2007-11-13 18:38 | 显示全部楼层

回复 #1 russell 的帖子

s数据给出来看看
 楼主| 发表于 2007-11-14 10:52 | 显示全部楼层

数据

Inner.txt

66.09 KB, 下载次数: 17

数据文件,4099点,最后三个是参数,分别是采样频率,设备型号,转速

发表于 2007-11-14 14:40 | 显示全部楼层

回复 #4 russell 的帖子

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

[ 本帖最后由 donkeyxu 于 2007-11-14 15:19 编辑 ]
 楼主| 发表于 2007-11-15 18:13 | 显示全部楼层

这些点是按时间排序的,
不好意思,公式弄错了,是这个

[ 本帖最后由 russell 于 2007-11-15 18:14 编辑 ]
未命名.bmp
发表于 2007-11-15 18:58 | 显示全部楼层

回复 #6 russell 的帖子

%那就不清楚了还是有负数,你可以看看这个程序问题在哪
s=dlmread('Inner.txt');
s=s(1:end-3);dt=10^(-4);t=[1:length(s)]*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);

评分

1

查看全部评分

 楼主| 发表于 2007-11-16 13:47 | 显示全部楼层
原帖由 donkeyxu 于 2007-11-15 18:58 发表
%那就不清楚了还是有负数,你可以看看这个程序问题在哪
s=dlmread('Inner.txt');
s=s(1:end-3);dt=10^(-4);t=[1:length(s)]*dt;
s1=diff(s)/dt;s2=diff(s1)/dt;s3=diff(s2)/dt;
fi=s1(1:end-1).^2-s(1:end- ...

谢谢啊,
我好好看看,
离散差分导致数据变短,在跟原信号运算,直接去掉原信号后面的?妥当吗?
发表于 2007-11-16 14:04 | 显示全部楼层

回复 #8 russell 的帖子

妥当
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-23 21:30 , Processed in 0.062628 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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