Problema di "riempimento" cell array

di il
2 risposte

Problema di "riempimento" cell array

Ciao a tutti, vi spiego il mio problema.
Parto dall'avere un cell array (vettore colonna) all'interno del quale, per ogni cella, ho una struct contente i dati dell'acquisizione di un certo segnale. Questo cell array si chiama "pazienti".
Quello che dovrei fare io è creare un altro cell array caratterizzato da tante righe quanti sono i pazienti e una colonna, che in ogni cella contenga una matrice, matrice creata concatenando dei vettori contenuti in una determinata sezione all'interno di "pazienti". Mi spiego meglio:

pazienti{1,1}.signal.data{1,1} %contiene la prima riga della matrice del paziente1
pazienti{1,1}.signal.data{2,1} %contiene la seconda riga della matrice del paziente1
pazienti{1,1}.signal.data{3,1} %contiene la terza riga della matrice del paziente1
pazienti{1,1}.signal.data{27,1} %contiene l' ultima riga della matrice del paziente1

pazienti{2,1}.signal.data{1,1} %prima riga della matrice del paziente2
pazienti{2,1}.signal.data{2,1} %seconda riga della matrice del paziente2
pazienti{2,1}.signal.data{3,1} %terza riga della matrice del paziente2
pazienti{2,1}.signal.data{27,1} %ultima riga della matrice del paziente2

e così via..

Quello che vorrei ottenere è un cell array "matrice_pazienti" fatto così:
matrice_paziente{1,:} = [ pazienti{1,1}.signal.data{1,1};
pazienti{1,1}.signal.data{2,1};
pazienti{1,1}.signal.data{3,1};
.
.
pazienti{2,1}.signal.data{27,1} ];

matrice_paziente{2,:} = [ pazienti{2,1}.signal.data{1,1};
pazienti{2,1}.signal.data{2,1};
pazienti{2,1}.signal.data{3,1};
.
.
pazienti{2,1}.signal.data{27,1} ];

Se lo devo fare per un singolo paziente non ho grossi problemi perchè faccio, per esempio per il paziente 1:

N=1 %numero pazienti
C=27  %numero canali d'interesse

matrice=zeros(27,length(pazienti{1,1}.signal.data{1,1}));
for i=1:C
	matrice(i,:)=pazienti{1,1}.signal.data{i,:};
end

for i=1:N
      matrici_paziente{i,:} = matrice;
end
Il problema si pone quando devo farlo contemporaneamente per tutti i pazienti. Qualcuno mi può dare qualche consiglio?
Grazie mille!

2 Risposte

  • Re: Problema di "riempimento" cell array

    Se ho capito correttamente la domanda e se i cellarray "data" hanno tutti la stessa dimensione (stesso numero di elementi), puoi provare ad usar la funzione cell2mat ()

    In questo caso, non è necessario specificare il numero di canali (che può essere diverso per ogni paziente - vedi esempio) perchè viene determinato automaticamente dalla funzione.
    Ad esempio:
    
    N=2 %numero pazienti
    
    pazienti{1,1}.signal.data{1,1}=1:10
    pazienti{1,1}.signal.data{2,1}=11:20
    pazienti{1,1}.signal.data{3,1}=71:80
    pazienti{2,1}.signal.data{1,1}=31:40
    pazienti{2,1}.signal.data{2,1}=51:60
    
    for i=1:N
       matrici_paziente{i,:}=cell2mat(pazienti{i,1}.signal.data)
    end
    
  • Re: Problema di "riempimento" cell array

    Grazie infinite, torna tutto! Gentilissimo
Devi accedere o registrarti per scrivere nel forum
2 risposte