Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

ESERCIZIO prodotto tra array


  • Questa discussione è bloccata Questa discussione è chiusa
Questa discussione ha avuto 47 risposta/e

#1
quasar

quasar

    Advanced Member

  • Utente
  • StellaStellaStella
  • 50 Messaggi:
Scrivere il file script prodotto.m che, definiti due array,
ne stampa in output il loro prodotto

vet1=rand(1,10);
vet2=rand(1,10);
disp(vet1);
disp(vet2);
vet3=vet1*vet2;
disp(vet3);

qualcuno puo' dirmi perchè mi dà errore????



#2
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:
sbagli il simbolo del prodotto vettoriale, non devi usare " * " ma " .* "

#3
quasar

quasar

    Advanced Member

  • Utente
  • StellaStellaStella
  • 50 Messaggi:
qualcuno sa aiutarmi con questo esercizio???io non so mettere i valori in ordine crescente

Scrivere il file script ordina.m che, letti in input due interi
n ed m, generi la matrice casuale di dimensione nxm
stampando in output la matrice ordinata per valori
crescenti su ogni colonna

#4
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

qualcuno sa aiutarmi con questo esercizio???io non so mettere i valori in ordine crescente

Scrivere il file script ordina.m che, letti in input due interi
n ed m, generi la matrice casuale di dimensione nxm
stampando in output la matrice ordinata per valori
crescenti su ogni colonna

questo è il codice della funzione, però per testarla mettici una matrice creata da te al posto dell' istruzione rand perchè far uscire una matrice rand che non abbia le colonne ordinate in senso crescente è come vincere il superenalotto , a quanto pare. :D
Mettici questi valori per esempio:
mat= [9,8,7;6,5,4]

function[mat]=ordina(n,m)
mat=rand(n,m)
for j=1:m
for i=2:n
if mat(i,j) < mat(1,j);
com=mat(i-1,j);
mat(i-1,j)= mat(i,j);
mat(i,j)=com;
end
end
end
disp(mat);
end


#5
quasar

quasar

    Advanced Member

  • Utente
  • StellaStellaStella
  • 50 Messaggi:
non me la dà....mi dà errore, poi ho notato che pur non cambiando nulla con la funzione disp a volte mi segnala errore altre no...bo, già non ci capisco nulla poi si mette pure matlab in sè a dar problemi

#6
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:
si ok! Mi sono dimenticato di dirti di inizializzare m e n nel dalla command window, infatti il numero i righe e colonne della matrice la funzione lo deve aver in input, altrimenti nn funziona.

#7
quasar

quasar

    Advanced Member

  • Utente
  • StellaStellaStella
  • 50 Messaggi:
li ho inizializzati ma non va

#8
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:
:scratch: ma che errore ti dice?
prova a mettere questo nell' editor:
function[mat]=ordina(n,m)
n=2;
m=3;
mat= [9,8,7;6,5,4]
for j=1:m
for i=2:n
if mat(i,j) < mat(1,j);
com=mat(i-1,j);
mat(i-1,j)= mat(i,j);
mat(i,j)=com;
end
end
end
disp(mat);
end
Salvati un altro file in un' altra cartella e controlla che la cartella che contene il file il sia nel current folder.

#9
quasar

quasar

    Advanced Member

  • Utente
  • StellaStellaStella
  • 50 Messaggi:
ora va, grazie milleeee fingerup

#10
quasar

quasar

    Advanced Member

  • Utente
  • StellaStellaStella
  • 50 Messaggi:
come scambio variabili???
o meglio
scrivere una funzione che prende in input due
variabili e ne scambia il valore.

#11
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

come scambio variabili???
o meglio
scrivere una funzione che prende in input due
variabili e ne scambia il valore.

E' esattamente lo stesso algoritmo che ho usato per la funzione ordina.m nelle istruzioni dopo l' if.
Se in input hai due valori A e B, in generale si procede così:
com=A
A=B
B=com
che tradotto in una funzione diventa:
function[num1,num2]=scambia_num(num1,num2)
com=num1;
num1=num2;
num2=com;
end
per i vettori la funzione diventa,(mettici un vettore prima di lenght per provarla):
function[vet]=scambia_num_vet(vet)
l=length(vet);
for i=1:(l-1)
com=vet(i);
vet(i)=vet(i+1);
vet(i+1)=com;
end
end


#12
quasar

quasar

    Advanced Member

  • Utente
  • StellaStellaStella
  • 50 Messaggi:
è il com che non so usare e non comprendo, non riesco neppure a trovare delle spiegazioni.
scusa l'ignoranza ma matlab è l'ignoto per me :mirror:

#13
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

è il com che non so usare e non comprendo, non riesco neppure a trovare delle spiegazioni.
scusa l'ignoranza ma matlab è l'ignoto per me :mirror:

com è una variabile di comodo, la puoi chiamare come ti pare.
In matlab non puoi fare uno scambio di variabili senza introdurne una di comodo, ti faccio un esempio:
immagina che le variabili siano scatole, nella scatola1 trovi la lettera A, nella scatola2 trovi la lettera B.
Quello che vogliamo fare, efettuando lo scambio di variabile, è mettere la lettera B nella scatola 1 e la lettera A nella scatola2.
Il problema è che in matlab ogni variabile può assumere uno ed un solo valore che può però variare (per questo si chiama variabile), detto in altre parole, nella scatola1, ci può stare o solo A o solo B ,e lo stesso discorso vale per la scatola2. Quindi se metti direttamente B nella scatola1, A lo perdi irrimediabilmente, perchè mentre tu hai messo B nella scatola1, matlab ha dovuto togliere A dalla scatola1 affinchè tu potessi metterci B.
Per non perdere A, l' unica cosa che puoi fare è prendere un' altra scatola, che chiamo scatola3(che inizialmente è vuota perchè semplicemente non esiste e di fatti la stiamo creando) e ci metti dentro A per non perderlo. La scatola3 rappresenta la variabile di comodo, perchè è semplicemente una variabile che noi assegniamo per non perdere un valore durante lo scambio.
Ora hai tre scatole di cui due ( scatola1 e scatola3) contengono A, mentre una (scatola2) contiene B.
A questo punto puoi mettere B nella scatola1 e A lo passi dalla scatola3 alla scatola2.
Tutto questo in Matlab si traduce nelle tre stringhe di codice che ti ho postato prima e per i vettori e le matrici vale lo stesso esempio della scatola, solo che in questo caso la scatola ha più vani.
Spero di non averti confuso le idee con qst esempio della scatola! :ciao:

#14
quasar

quasar

    Advanced Member

  • Utente
  • StellaStellaStella
  • 50 Messaggi:
ottimooo direi, mi hai illuminato

#15
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

ottimooo direi, mi hai illuminato

perfetto, mi fa piacere che tu abbia capito, se hai dubbi chiedi pure....tanto mi sto esercitando pure io con matlab...

#16
quasar

quasar

    Advanced Member

  • Utente
  • StellaStellaStella
  • 50 Messaggi:
rieccoci...allora il probl in questo caso è che non so scrivere gli interi a 16 bit
Scrivere una funzione che prende in input il
numero di righe r, di colonne c, genera una
matrice di numeri casuali interi a 16 bit e
restituisce il massimo, il minimo e il valore
medio

#17
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:
In che senso 16 bit? Negli esercizi che ho io nn compare ai una cosa del genere!

#18
quasar

quasar

    Advanced Member

  • Utente
  • StellaStellaStella
  • 50 Messaggi:
io ho trovato questo eserc nelle dispense di Genna...non ne ho idea neppure io

#19
quasar

quasar

    Advanced Member

  • Utente
  • StellaStellaStella
  • 50 Messaggi:
ad ogni modo la matrice di num INTERI casuali come si fa...non mi ricordo piu'

#20
peppepeppo

peppepeppo

    Moderatore di sezione

  • Moderatore
  • 2474 Messaggi:

ad ogni modo la matrice di num INTERI casuali come si fa...non mi ricordo piu'

mat=randint(m,n,[inf,sup])
genera la matrice m*n di numeri interi compresi nell' intervallo [inf,sup].
Se togli l' intervallo ti genera una matrice m*n di numeri interi [0,1].
P.S. posta la traccia dove compaiono i 16 bit, oppure dimmi di che data è.




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi