Aiuto Matrice in Matlab

linus90
Salve, ho un problema con Matlab; in pratica un esercizio mi richiede le istruzioni in Matlab per generare una matrice quadrata formata da elementi casuali compresi tra 5 e 25. Il mio problema è che non so come assegnare questo intervallo di valori, sto impazzendo! :cry:

Risposte
MasterCud
consideriamo l'intervallo generico [a,b], (nel tuo caso [25,5]) allora risulterà:

H = a + (b-a).*rand(m,n);
dove m ed n rispettivamente inticano il numero di righe e colonne di h.
se ti interessa avere inoltre cifre esatte allora ti conviene mettere un round e quindi: H =round( a + (b-a).*rand(m,n)); quindi ad esempio se vuoi generare una 2x2 avrai: H=round(25 + (5-25).*rand(2,2)) .

linus90
Fantastico! Non ci sarei mai arrivato da solo a tentativi xD Posso chiederti il significato della dicitura ".*" oppure ".^"?? Perchè si usa il "."?

giuscri
"linus90":
Fantastico! Non ci sarei mai arrivato da solo a tentativi xD Posso chiederti il significato della dicitura ".*" oppure ".^"?? Perchè si usa il "."?

Mi pare di ricordare che il punto prima di un operatore agisca elemento per elemento. Cosi' l'istruzione
( b -a ) .* rand(m, n)

moltiplica ogni elemento della matrice costruita da \( \operatorname{rand} \) per lo scalare \( b -a \).
In questo caso pero' (scalare per matrice) non c'e' alcuna differenza. O almeno cosi resituisce l'istruzione
A = rand(3, 5); 26 .* A == 26 * A # Restituisce True


Capisci che se andavi a prendere due matrici quadrate dello stesso ordine \( A \) e \( B \)
A * B != A .* B # Restituisce True

linus90
Si, il punto indica che l'operatore agisce punto per punto. Grazie a tutti per l'aiuto, siete stati utilissimi!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.