je the same code pour deux matrices d'entrée différents, Dans les deux cas, je vais l'appeler « la matrice d'entrée A »erreur en utilisant sub2ind (ligne 52) hors échelle indice Matlab
Le premier cas est un 7000X4
le second cas est un 29500X12
je besoin de diviser une colonne sélectionnée dans les fenêtres puis pour chaque fenêtre i besoin de calculer le std et stocker la valeur à l'intérieur d'une matrice std_vals
J'ai pris soin de changer la valeur de mes variables d'entrée.
Dans le premier cas, mon objectif était d'analyser la 4ème colonne, dans le second cas mon objectif était d'analyser la 12e colonne
Dans le premier cas, le code a travaillé dans le second cas
la Code me retourne un message d'erreur
J'ai essayé d'analyser toutes les étapes du code, mais je dind't trouver l'erreur.
Pourriez-vous s'il vous plaît me aider à mieux comprendre?
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);
Je suis autodidacte. Pour mieux comprendre mon erreur, je réécris d'abord sur un morceau de papier le code, puis j'analyse chaque étape, et j'étudie la sortie. Je me suis pris plus de 4 heures.
J'ai essayé aussi de mettre dans le second cas un vecteur 7000X12, mais le code me retourné la même erreur.
Je pense que ma méthode n'est pas très efficace. Étant donné que votre chevauchement pour les fenêtres est zéro, le code ci-dessous devrait fonctionner pour tout tableau d'entrée A
Je n'ai pas résolu la question de savoir pourquoi vous obtenez des erreurs, mais j'ai fourni une autre solution ci-dessous pour le cas trivial de chevauchement zéro entre les fenêtres. –
@ b3. il y a une erreur étrange ou une anomalie dans l'ensemble de données, je vais aller en profondeur, parce que j'ai essayé avec un 102047X12 et cela fonctionne sans problème –