Quando si chiama norm
su una matrice in MATLAB, restituisce quella che è nota come "norma di matrice" (un valore scalare) anziché una matrice di norme vettoriali. Esiste un modo per ottenere la norma di ciascun vettore in una matrice senza il looping e sfruttando la vettorizzazione di MATLAB?Norma vettoriale di una matrice di vettori in MATLAB
risposta
È possibile calcolare autonomamente la norma di ogni colonna o riga di una matrice utilizzando element-wise arithmetic operators e le funzioni definite per operare su determinate dimensioni di matrice (come SUM e MAX). Ecco come si potrebbe calcolare alcune norme colonna-saggio per una matrice M
:
twoNorm = sqrt(sum(abs(M).^2,1)); %# The two-norm of each column
pNorm = sum(abs(M).^p,1).^(1/p); %# The p-norm of each column (define p first)
infNorm = max(M,[],1); %# The infinity norm (max value) of each column
Queste norme possono facilmente essere fatto per operare sulle righe invece delle colonne modificando gli argomenti dimensione da ...,1
a ...,2
.
forse dovresti specificare in modo esplicito le dimensioni lungo le quali funzionano SUM e MAX, in questo modo sarebbe più semplice passare a regole di riga ... – Amro
@Amro: buon suggerimento. Fatto! – gnovice
Se 'M' consiste solo di numeri reali, è possibile sostituire' abs (M) 'con' M' nel 'dueNorm' poichè il'.^2' cancella efficacemente qualsiasi segno negativo. – kroimon
L'implementazione esistente per la due-norma può essere migliorata.
twoNorm = sqrt(sum(abs(M).^2,1)); # The two-norm of each column
abs(M).^2
sta per essere il calcolo di un intero gruppo di inutili radici quadrate che solo ottenere immediatamente quadrato.
Molto meglio fare:
twoNorm = sqrt(
sum(real(M .* conj(M)), 1)
)
Questo gestisce in modo efficiente reale e complessa M.
Utilizzando real()
assicura che sum
e sqrt
agire su numeri reali (piuttosto che i numeri complessi con 0 componente immaginaria).
Dalla versione 2017 in poi, è possibile utilizzare vecnorm.
- 1. vettoriale di vettori, riserva
- 2. applicazione della funzione norma alle righe di matrice - Matlab
- 3. Coltivare una Hashmap di vettori in Matlab
- 4. Generazione di vettori in MATLAB
- 5. Come disegnare vettori (vettori fisici 2D/3D) in MATLAB?
- 6. concatenare i vettori di un array di celle in MATLAB
- 7. Rotazione di una matrice 3D in MATLAB
- 8. Risoluzione di una matrice in MATLAB?
- 9. Trovare il massimo comun divisore di una matrice in MATLAB
- 10. Conversione di una matrice matlab in un vettore
- 11. Sottrarre o aggiungere vettori in una matrice
- 12. Come generare tutte le coppie da due vettori in MATLAB usando un codice vettoriale?
- 13. Come si crea una matrice di vettori in eigen?
- 14. MATLAB plot l'esportazione in formato vettoriale
- 15. Come posso accumulare celle di diverse lunghezze in una matrice in MATLAB?
- 16. Come convertire una matrice di gradazioni di grigio in una matrice RGB in MATLAB?
- 17. Rimozione di elementi da una matrice di strutture in MATLAB
- 18. conteggio coincidenze di numeri in colonne di una matrice - MATLAB
- 19. efficiente calcolare una matrice 3D di prodotti esterni - MATLAB
- 20. Come visualizzare (stampare) vettoriale in Matlab?
- 21. "Desort" una matrice. Annullare l'ordinamento in Matlab
- 22. Incoerenze di matrice/vettore "wat" di ottava e Matlab
- 23. Come si campiona una matrice in MATLAB?
- 24. Calcolare "v^TA v" per una matrice di vettori v
- 25. Matrici multiple in matrice di celle Matlab?
- 26. Preallocazione di matrice cellulare in MATLAB
- 27. Come ottenere i dati R in una matrice di MATLAB
- 28. det di una matrice restituisce 0 in matlab
- 29. importazione di una matrice sparsa python in MATLAB
- 30. Come preallocare una matrice di classe in MATLAB?
che dire di somma? –