Mi sembra strano che, come scrivi nella domanda:
Utilizzando però questa istruzione conserva solo il max relativo all'ultima colonna di hvf, io invece vorrei conservarli tutti
Hai inserito la chiamata alla funzione "cellfun" al fondo dello script, dopo, cioè, i due cicli "for"?
Dato in input un cellarray Hvf con dimensione (1,3), le istruzioni:
max_Hvf=cellfun(@max,Hvf)
max_Hvf=cellfun(@min,Hvf)
ritornano, in due vettori, rispettivamente, il massimo ed il minimo di ogni elemento del cellarray:
Hvf{1}=randi(1000,10,1);
Hvf{2}=randi(1000,10,1);
Hvf{3}=randi(1000,10,1);
%
% Calcolo del valore massimo di ogni elemento del cellarray "Hvf"
%
Hvf{1}
Hvf{2}
Hvf{3}
max_Hvf=cellfun(@max,Hvf)
min_Hvf=cellfun(@min,Hvf)
Output:
ans =
275
242
244
155
957
936
819
729
176
361
ans =
189
2
317
700
626
544
440
288
502
762
ans =
763
577
748
646
124
505
348
93
148
199
max_Hvf =
957 762 763
min_Hvf =
155 2 93
Per quanto riguarda la seconda parte della domanda, il calcolo del rapporto, nell'istruzione che hai inserito ci sono diversi errori:
modulosensore1=(max(p(:,4))-(A(:,i)))\(max(p(:,4))-(B(:,i)));
1) hai usto l'operatore "\" al posto dell'operatore "/" per la divisione
2) nella domanda scrivi di voler calcolare:
rapporto (tra il max della 4 colonna del vettore p meno il max del 1 vettore della cella Hvf calcolato come detto prima) e il minimo della 4 colonna del vettore p meno il min del 1 vettore della cella Hvf
nell'istruzione che hai scritto, invece, al numeratore calcoli la
differenza tra il massimo della quarta colonna della matrice "p" ed (tutti) i valori della "i-esima colonna" della matrice "A" invece del
max della 4 colonna del vettore p meno il max del 1 vettore della cella Hvf .
al denominatore, oltre a calcolare il
massimo invece del
minimo, ripeti l'errore commesso ... al numeratore
3) non è chiaro cosa siano "A" e "B" e cosa rappresenti "i" visto che, nella domanda, citi esplicitamente i numeri delle colonne che ti interessano.
Il calcolo del rapporto dovrebbe essere fatto al termine del doppio loop.
Non avendo a disposizione i dati di input del tuo specifico, non è possibile eseguire il tuo script.
Tuttavia, esaminando lo script si può dedurre che il cellarray Hvf avrà una riga e tre colonne.
Il numero delle righe di ogni elemento sarà uguale al numero delle righe della matrice "p": questo valore non è stimabile.
Supponendo che sia, ad esempio, 10, ogni elemento del cellarray Hvf avrà, di conseguenza, 10 righe.
Nello script che segue:
[*] vengono creati, a titolo di esempio, la matrice "p" ed il cellarray "Hvf"
[*] la funzione "cellfun" viene utilizzata per calcolare il massimo ed il minimo di ogni elemento del cellarray "Hvf"
[*] viene calcolato il rapporto specificato nella domanda
%
% Generazione matrice "p" di esempio
%
p=randi(300,10,4)
%
% Generazione del cellarray "Hvf"
%
Hvf{1}=randi(1000,10,1);
Hvf{2}=randi(1000,10,1);
Hvf{3}=randi(1000,10,1);
%
% Calcolo del valore massimo di ogni elemento del cellarray "Hvf"
%
max_Hvf=cellfun(@max,Hvf)
%
% Calcolo del valore minimo di ogni elemento del cellarray "Hvf"
%
min_Hvf=cellfun(@min,Hvf)
%
% Calcolo del valore massimo della quarta colonna della matrice "p"
%
max_p=max(p(:,4))
%
% Calcolo del valore miniomo della quarta colonna della matrice "p"
%
min_p=min(p(:,4))
%
% Calcolo del rapporto
%
rap=(max_p-max_Hvf(1))/(min_p-min_Hvf(1))
Hope this helps.