Riordina contenuto matrici

di il
2 risposte

Riordina contenuto matrici

Buonasera, provo a spiegare il problema che ho sperando che qualcuno mi riesca a dire dove sbaglio. Parto da una matrice molto grande (di dimensioni 49152x5) chiamata tab e da un vettore f di dimensioni 96x1. Quello che devo fare e verificare se nella terza colonna della matrice tab ci sono elementi uguali a quelli contenuti in f, mi dovrebbe restituire un indice e con questo vado a salvarmi in un vettore l'elemento che sta nella riga trovata tramite indice e nella colonna 2 di tab. Faccio un esempio:
f=[1 2 3 4 5....... 96] f (ha dimensioni 96x1)
tab= [..... ; 128 48 5.......; 1 1 1 2 2 2 3 4 3....; ....... ; .......] (ha dimensioni 49152x5)

Dovrei riuscire a prendere il primo valore di f, nell'esempio 1, verificare se è presente nella terza colonna di tab farmi restituire l'indice e in corrispondenza di questo indice e colonna 2 salvarmi i valori relativi. Nel caso in vett dovrebbe ad esempio salvare 128 48 5. Vorrei poter salvare tutti i 96 vettori risultati (in uno verifica se 1 ci sta nella terza colonna di tab e fa quanto detto in precedenza , in uno verifica se 2 ci sta nella terza colonna di tab..... e cosi via).

Io ho provato con un ciclo e un find ma sbaglio decisamente il ragionamento.
Ecco il codice:

load('tab.mat');
vett=[];
f=[];


for k=1:96
f(k,1)=k;
end

for i=1:49152
h=tab(i,3);
g=f(:,1);
indice=find(g==h);
vett(i,1)=tab(indice,2);
% capire come memorizzare tutti i 96 vettori
end

2 Risposte

  • Re: Riordina contenuto matrici

    load('tab.mat');
    vett=repmat({{}},1,96);
    for i=1:96
    vett{i}=tab(tab(:,3)==i,2);
    end
    Per vedere i risultati salvati in ogni caso, devi fare per esempio:
    vett{5}
    con questo comando puoi vedere gli elementi salvati della seconda colonna in cui la terza colonna era uguale a 5
  • Re: Riordina contenuto matrici

    Ti ringrazio
Devi accedere o registrarti per scrivere nel forum
2 risposte