[已解决] EMD只能处理一行或者一列数据吗?

[复制链接]
夏天的123 发表于 2021-1-7 10:53:36
楼主用的是matlab2016a,用的EMD和视频分析的工具箱(package_emd和tftb-0.2),如果用例子:
x=rand(2,2);
emd(x);

就会出现如下报错:
错误使用 emd>init (line 745)
X must have only one row or one column (X必须只有一行或一列)

出错 emd (line 160)
[x,t,sd,sd2,tol,MODE_COMPLEX,ndirs,display_sifting,sdt,sd2t,r,imf,k,nbit,NbIt,MAXITERATIONS,FIXE,FIXE_H,MAXMODES,INTERP,mask] = init(varargin{:});

出错 Untitled (line 2)
emd(x);
难道EMD只能处理行或者列数据吗?求教了!


最佳答案


coolchen302 发表于 2021-1-9 13:02:23
夏天的123 发表于 2021-1-9 10:14
谢啦!最近研究发现又有一个新问题,就是信号分解出来的IMF分量数目太少,请问有方法让IMF分量多一些吗? ...

去help里查一下,有几个参数应该是可以选的,比如能量之类的,具体的不太记得了

6 条回复


coolchen302 发表于 2021-1-7 15:47:30
是的啊,是针对一维信号进行模态分解的

夏天的123 发表于 2021-1-7 16:00:31
coolchen302 发表于 2021-1-7 15:47
是的啊,是针对一维信号进行模态分解的

感谢!再问一下有没有可能通过修改工具箱里的函数来实现矩阵数据处理呢?

coolchen302 发表于 2021-1-7 21:14:34
本帖最后由 coolchen302 于 2021-1-7 21:15 编辑
夏天的123 发表于 2021-1-7 16:00
感谢!再问一下有没有可能通过修改工具箱里的函数来实现矩阵数据处理呢? ...

应该是没办法的
EMD的方式很简单,就是计算数据的极值上下包络,然后用数据减去包络的平均值,这样就完成一次分解了。然后一直这么执行只到特定的条件结束。
二维的方式,看看要怎么扩展了,是要计算包络曲面了,然后再执行相应的操作。理论上可行,但是实际上要自己摸索一下了,不确定有没有现成的程序


夏天的123 发表于 2021-1-9 10:14:17
coolchen302 发表于 2021-1-7 21:14
应该是没办法的
EMD的方式很简单,就是计算数据的极值上下包络,然后用数据减去包络的平均值,这样就完成 ...

谢啦!最近研究发现又有一个新问题,就是信号分解出来的IMF分量数目太少,请问有方法让IMF分量多一些吗?

coolchen302 发表于 2021-1-9 13:02:23
夏天的123 发表于 2021-1-9 10:14
谢啦!最近研究发现又有一个新问题,就是信号分解出来的IMF分量数目太少,请问有方法让IMF分量多一些吗? ...

去help里查一下,有几个参数应该是可以选的,比如能量之类的,具体的不太记得了
回复此楼

夏天的123 发表于 2021-1-11 11:08:37
coolchen302 发表于 2021-1-9 13:02
去help里查一下,有几个参数应该是可以选的,比如能量之类的,具体的不太记得了 ...

感谢,找到了,没问题了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表