Matlab:Matlab中的滚动函数

Matlab:Matlab中的滚动函数,matlab,sliding,Matlab,Sliding,我是Matlab的新手,我正在尝试编写CMSE的滚动函数 (合成多尺度熵)时间序列。我尝试了slidefun,但这仅在输出为标量且CMSE的输出为向量时有效。时间序列的滚动窗口假定为500,每个加窗CMSE的输出为100 x 1向量。XX是时间序列 roll_CMSE_100=zeros(100,(length(xx)-499)); for i=1:(length(xx)-499) roll_CMSE_100(i)=CMSE(xx(i:(499+i)),100) end 我得到以下输出 ???

我是Matlab的新手,我正在尝试编写CMSE的滚动函数 (合成多尺度熵)时间序列。我尝试了slidefun,但这仅在输出为标量且CMSE的输出为向量时有效。时间序列的滚动窗口假定为500,每个加窗CMSE的输出为100 x 1向量。XX是时间序列

roll_CMSE_100=zeros(100,(length(xx)-499));
for i=1:(length(xx)-499)
roll_CMSE_100(i)=CMSE(xx(i:(499+i)),100)
end
我得到以下输出

???  In an assignment  A(I) = B, the number of elements in B and
 I must be the same.

感谢您的时间和考虑

Matlab告诉您的问题是:您正在为“X”位置的元素指定一个向量,但应该是一个数字,因为roll_CMSE是一个矩阵。或者使用单元格数组,或者正确分配。 如果CMSE(xx(i:(499+i)),100)的输出是100x1向量,则正确的赋值方法是

roll_CMSE_100=zeros(100,(length(xx)-499));
for i=1:(length(xx)-499)
  roll_CMSE_100(:,i)=CMSE(xx(i:(499+i)),100)
end

这只是将输出分配到roll_CMSE矩阵的“i”列。

我非常确定第3行应该是
roll_CMSE_100(:,i)=…
,但我会仔细查看并确认。非常感谢您的帮助。