mercoledì, novembre 08, 2006

Matlab: ottenere un numero arbitrario di parametri d'uscita

Spesso in Matlab capita di conoscere solo a run-time il numero di parametri da ottenere in uscita dalla chiamata a una funzione, questa situazione si presenta, ad esempio, se si utilizza la classica funzione ind2sub su un array di dimensionalità non nota a tempo di scrittura del codice.
Si immagini di avere a disposizione un array A ed un indice i di accesso lineare ai dati contenuti in A (accesso non strutturato, vedendo i semplicemente dati come una sequenza senza struttura). Ottenerne le dimensioni è possibile con la funzione size, ottenere l'indice strutturato da i richiede di ottenere in uscita dalla funzione ind2sub un numero di parametri non a tempo di scrittura del codice. L'utilizzo dell'espansione delle celle in sequenze di parametri viene in soccorso:
% Ottenimento delle dimensioni:
sze = size(A);

% Costruzione della cella per i parametri in output:
is = cell(1,numel(sze));

% Conversione dell'indice i in indice strutturato:
[is{:}] = ind2sub(sze,i);

% Esempio di utilizzo degli indici strutturati memorizzati nella cella:
elem = A(is{:});

Nessun commento: