Я использовал один и тот же код для двух разных входных матриц. В обоих случаях я буду называть это "входной матрицей A"
Первый корпус - 7000X4
Второй корпус - 29500X12
Мне нужно разделить выбранный столбец в окнах, а затем для каждого окна мне нужно вычислить стандартное значение и сохранить значение внутри матрицы 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, но код выдал мне ту же ошибку.