[MATLAB] Dubbi su sum e disp

Messaggioda studente-studente » 18/02/2017, 19:21

Salve, non so in che sezione mettere il post comunque:
Buongiorno, non riesco a capire l'uso di sum e disp nonostante abbia letto online e su libri. Ho provato a fare qualche tentativo ma i dubbi persistono.

Ipotizzando di avere:
A=[1:3;4:6;7:9];
sum(A)
sum(A,1)
sum(A,2)
sum(A,3)
sum(A,4)

Ho notato che facendo:
-sum(A) oppure sum(A,1) ritorna un vettore riga dove le componenti sono la somma degli elementi di A lungo le colonne
-sum(A,2) ritorna un vettore colonna dove le componenti sono la somma degli elementi di A lungo le righe
-da sum(A,i) con i che parte da 3 in poi ritorna esattamente la matrice A.

Mentre per quanto riguarda disp:
x=[1,2,3,4];
disp(x)
disp([x])
disp(x')
disp([x'])
disp(x x')
disp([x x'])
disp(3 4)
disp[3 4]
disp([3 4])

Facendo:
-disp(x) oppure disp([x]) stampa il vettore x stampa il vettore riga x
-disp(x') oppure disp([x']) stampa il vettore x trasposto
-disp(x x') fa errore "Error: Unexpected MATLAB expression."
-disp([x x']) fa errore "Error using horzcat. Dimensions of matrices being concatenated are not consistent."
-disp(3 4) "Error: Unexpected MATLAB expression."
-disp[3 4] "Error: Unbalanced or unexpected parenthesis or bracket."
-disp([3 4]) però mi stampa correttamente i due valori

Potreste spiegarmi gentilmente la funzione disp e le sue parentesi? Perché se metto gli spazio tra i valori me li stampa mentre i vettori no? Quando scrivo disp([3 4]) considera i numeri come componenti di un vettore riga oppure semplicemente come numeri?

Grazie in anticipo!!
studente-studente
Junior Member
Junior Member
 
Messaggio: 100 di 472
Iscritto il: 13/07/2016, 21:43

Re: [MATLAB] Dubbi su sum e disp

Messaggioda insideworld » 18/02/2017, 20:01

Ciao,
sono un pò arrugginito in matlab, ma provo comunque a risponderti.
se tu scrivi disp(x) stai chiedendo di stampare il contenuto della variabile x, ovvero il vettore/matrice.
quando tu usi le parentesi quadre (tipo disp([3 4]) )gli stai dicendo stampa (vettore definito qui ), cioè stai creando un vettore di elementi 3 e 4.
quando hai definito x hai usato le parentesi quadre perchè il loro significato è quello di creare un vettore, non c'entrano con i comando disp.
infatti disp[2 3] da errore perchè mancano le parentesi di disp all'interno delle quali è definito il parametro.
disp(3 4) invece fallisce perchè disp richiede un solo elemento.
infatti fallisce anche(x x')
ma fallirebbe anche disp(x a) con a due vettori qualunque.
non so se esiste un modo per stampare più vettori con il comando disp, mi ricordo che esistevano dei modi per unire più matrici in un unica matrice e memorizzarla in una variabile, ma non lo usavamo molto.
infine disp([x]) dovrebbe essere tollerato perchè tu stai definendo un vettore che contiene in posizione 1,1 una matrice, però quando usi disp([x x']) ti da errore perchè dovrebbe stamparti qualcosa del tipo
[1,1,1,1],[ 1
_________ 1
_________ 1
_________ 1]

(i trattini mi servono per allineare gli uni, perchè il sito cancella gli spazi multipli)
ovvero una matrice colonna con al primo elemento un vettore riga e al secondo un vettore colonna...
prova con disp([x x])con x vettore colonna o matrice quadrata, se funziona allora lo puoi usare solo per matrici con stessa "altezza", altrimenti usa
plot(x)
plot(x')

Ciao
Avatar utente
insideworld
Junior Member
Junior Member
 
Messaggio: 42 di 306
Iscritto il: 13/01/2017, 15:24

Re: [MATLAB] Dubbi su sum e disp

Messaggioda studente-studente » 18/02/2017, 20:17

Grazie mille, sei stato chiarissimo!
Hai qualche ricordo anche di sum?
studente-studente
Junior Member
Junior Member
 
Messaggio: 102 di 472
Iscritto il: 13/07/2016, 21:43

Re: [MATLAB] Dubbi su sum e disp

Messaggioda insideworld » 18/02/2017, 20:27

no ma ho trovato questo manualetto della mia prof
http://calvino.polito.it/~falletta/Calcolo_Numerico/ManualettoMatlab.pdf
pag 4 e 5 nella tabella ci sono degli esempi
Avatar utente
insideworld
Junior Member
Junior Member
 
Messaggio: 45 di 306
Iscritto il: 13/01/2017, 15:24

Re: [MATLAB] Dubbi su sum e disp

Messaggioda apatriarca » 18/02/2017, 21:17

La documentazione di Matlab è fatta molto bene. Per ottenere informazioni su una specifica funzione (per esempio sum) è sufficiente scrivere "help sum". Ovviamente è possibile anche farlo direttamente dalla GUI, ma non uso matlab da un po' di tempo per cui la GUI potrebbe essere cambiata. In alternativa è sufficiente cercare "Matlab sum" su google troverai probabilmente la stessa documentazione come primo risultato.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4544 di 10435
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [MATLAB] Dubbi su sum e disp

Messaggioda studente-studente » 21/02/2017, 18:20

Grazie per le risposte, appena ho un attimo di tempo mi documento meglio e leggo quel manualetto!!
studente-studente
Junior Member
Junior Member
 
Messaggio: 103 di 472
Iscritto il: 13/07/2016, 21:43

Re: [MATLAB] Dubbi su sum e disp

Messaggioda insideworld » 24/02/2017, 10:24

ho appena visto che in uno degli utimi esami che devo sostenere c'è un?altra parte di matlab, quindi dai primi di marzo dovrei riprenderlo.
Se ti serve ancora cercherò di capire bene quelle cose sulla funzione sum e di risponderti
Avatar utente
insideworld
Junior Member
Junior Member
 
Messaggio: 54 di 306
Iscritto il: 13/01/2017, 15:24

Re: [MATLAB] Dubbi su sum e disp

Messaggioda studente-studente » 25/02/2017, 19:38

Grazie mille per l'interessamento, in effetti mi serve ancora perciò se ti capita ed hai un attimo fammi sapere!
studente-studente
Junior Member
Junior Member
 
Messaggio: 112 di 472
Iscritto il: 13/07/2016, 21:43

Re: [MATLAB] Dubbi su sum e disp

Messaggioda apatriarca » 25/02/2017, 23:44

Ma hai guardato la documentazione di Matlab? Le funzioni vengono spiegate in modo molto approfondito con esempi.. Non capisco esattamente quale sia il tuo dubbio riguardo alla funzione sum. Questa funzione somma i valori di una matrice lungo una qualche dimensione lasciando le altre invariate. Passando quindi 1 come secondo argomento stai sommando i valori di ogni colonna (il risultato è quindi un vettore riga), passando 2 stai sommando i valori per ogni riga e così via per ogni dimensione. Siccome la matrice ha solo due dimensioni non ha senso passare valori maggiori di 2. Se avessi però una matrice 3D anche sum(A, 3) avrebbe senso.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4552 di 10435
Iscritto il: 08/12/2008, 20:37
Località: Madrid


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite