我用the same code對兩種不同的輸入矩陣, 在兩種情況下,我將其稱爲「輸入矩陣A」錯誤超出範圍下標Matlab的
第一種情況是一個7000X4
的第二種情況是一個29500X12
我需要選定的列中的窗口 分裂,然後對每個窗口 我需要計算在std和值存儲std_vals
基質內部
我照顧改變我的輸入變量的值。
在第一種情況下,我的目標是分析第4列, 在第二種情況下我的目標是分析12列
在代碼工作
在第二種情況下,第一種情況下代碼返回了我的錯誤消息
我試圖分析代碼中的所有步驟,但我沒有發現錯誤。
你能幫我理解一下嗎?
column_length=size(A,1);
Amod= mod(column_length,100);
if Amod~=0
A=A(1:(size(A,1)-Amod),:);
end
newlenght=size(A);
%selected column vector to analyze
columnselected=4;
%window dimension
window_size=200;
%overlap between two windows
overlap=0;
%increment needed
step=window_size - overlap;
%std threshold
soglia=2;
std_vals= NaN(size(A,1),1);
devstd=std(A(:,4));
stdInds=bsxfun(@plus,1:step:(size(A,1)-overlap),(0:(window_size-1)).');
%In the first case size(stdInds)=200X35
%In the second case size(stdInds)=200X148
%In the first case size(repmat(columnselected,size(stdInds))= 200X35
%In the second case size(repmat(columnselected,size(stdInds))= 200X148
%In the first case size(A)=7000X4
%In the second case size(A)=29500X12
std_vals=std(A(sub2ind(size(A),stdInds,repmat(columnselected,size(stdInds)))));
highStdWindows=find(std_vals>soglia);
我是自學的。爲了更好地理解我的錯誤,我首先在一張紙上重寫了代碼,然後分析了每一步,並研究了輸出。我花了4個多小時。
我也試過把第二種情況放在一個7000X12向量中,但是代碼給我返回了同樣的錯誤。
我沒有解決你爲什麼會得到錯誤,但我確實提供了另一種解決方案,以解決窗口之間零重疊的瑣碎情況。 –
@ b3。數據集中存在一些奇怪的錯誤或異常,我會深入,因爲我嘗試了102047X12,它的工作沒有問題 –