MATLAB: Sélectionnez des valeurs spécifiques dans une matrice basée sur des indices

Salut à tous,
J’ai une matrice de 4 * 37800. Je souhaite conserver des valeurs spécifiques basées sur deux indices.
Le premier index montre les lignes que je veux conserver et le second les colonnes toutes les 15 étapes. Je veux dire que j’ai divisé les 37800 colonnes en groupes de 15, l’index montre quelle colonne de chaque groupe je veux conserver.
Comment puis-je isoler les valeurs en fonction des deux indices?
J’attache les dossiers.
iMxR est l’index montrant les lignes que je veux. ix est l’indice indiquant de quelle colonne j’ai besoin. freq est la matrice.
Merci de votre aide.

Meilleure réponse

  • Je crois que cela vous donnera les valeurs que vous souhaitez:
     

    temp = reshape(iMxR, 15, [])';
    idx = sub2ind(size(temp), 1:size(temp,1), ix);
    row = temp(idx); % row(i) is the row of the ith 4x15 block
    col = ix; % col(i) is the column of the ith 4x15 block
    temp = reshape(frequencies, 4, 15, []); % convert frequencies to a bunch of 4x15 blocks
    idx = sub2ind(size(temp), row, col, 1:size(temp,3)); % convert row and col to linear indices of temp
    val = temp(idx); % pull out the relevant values