Aiuto Matrice in Matlab
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!

Risposte
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)) .
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)) .
Fantastico! Non ci sarei mai arrivato da solo a tentativi xD Posso chiederti il significato della dicitura ".*" oppure ".^"?? Perchè si usa il "."?
"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
Si, il punto indica che l'operatore agisce punto per punto. Grazie a tutti per l'aiuto, siete stati utilissimi!