2014-09-03 161 views
0

我是Matlab中的臨界新手。我試圖在時間序列上編寫CMSE (構成多尺度熵)的滾動函數。我試過slidefun,但只有當輸出是標量,CMSE的輸出是矢量時才起作用。時間序列的滾動窗口假設爲500,每個窗口CMSE的輸出是100×1向量。 XX是時間序列。Matlab:在matlab中的滾動函數

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. 

謝謝您的時間和考慮

+0

我很確定第3行應該是'roll_CMSE_100(:,i)= ...'但我會仔細看看並確認。 – beaker 2014-09-03 17:16:46

回答

1

Matlab的是告訴你的問題:你是分配給在位置「X」元素的矢量但應該是一個數字,因爲roll_CMSE是一個矩陣。或者你使用單元陣列或者你正確地賦值。 如果CMSE的輸出(XX(I:(499 + i))的,100)是100X1矢量分配的值這簡單地分配輸出中爲 「I」 的列中的正確的方法是

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矩陣。

+0

非常感謝你的幫助。 – user3647872 2014-09-05 16:32:13

+0

不客氣。但我建議你在使用MATLAB之前先對MATLAB進行基本的介紹。 – giuseppe 2014-09-05 16:45:16