|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 686
|
un nOob alle prese con matlab
ciao a tutti!!ho da poco iniziato ad usare matlabe perciò non ne sono un grande esperto.
devo poter inserire valori da tastiera solo da 5 a 10, e fare la media. E questa è la parte per me facile.L'altra ke non so fare è far si che i numeri inserirti siano visualizzati in valore decrescente rispetto alla loro frequenza di inserimento. Esempio: inserisco 1,2,3,5,5,5,6, e così via.Se inserisco 0 deve uscire: la media è 3,15 5 +++ 3 - 2 - 1 - 6 + 4 e ci devono essere dei + o - a seconda del numero di volte che il numero è stato inserito e + se è maggiore della media, - se è minore. Spero di essermi spiegato bene. Ciau |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
|
devi contare le occorrenze dopo che li hai inseriti. (ti conviene fare un vettore che associa ad ogni numero il numero di ripetizioni)
poi nel ciclo for che ti scriverà i numeri ad ogni giro devi impostare - una if che sceglie il segno (praticamente ti fai una variabile "SEGNO" di tipo carattere che SE n>media vale "+" altrimenti "-") - e successivamente una for che va da 1 alla variabile che conta il numero di occorrenze e scrive la variabile segno.
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 686
|
Quote:
M=input('inserire numero'); count=0; sum=0; L=zeros ([22 1]); L(M)=L(M)+1; K='+'; P='-'; while M>0; if M<=22; count=count+1; sum=sum+M; L(M)=L(M)+1; else disp('error:no over22'); end; M=input('new number'); end; Z=sum/count; disp('media numeri inseriti'); disp(Z) io e il ciclo for non è che siamo tanto amici thanks |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
|
ehm... sarà un paio d'anni che non uso matlab e quindi non sono freschissimo, perdipiù non ce l'ho installato...
e poi non capisco cosa significa che devi poter inserire valori da tastiera solo da 5 a 10, se poi nell'es usi l'1.. ad ogni modo, carina l'idea di utilizzare l'indice del vettore invece di memorizzare il numero, anche se non particolarmente comoda per lo svolgimento... sarebbe forse più comodo fare una matrice 22*2 dove la prima colonna è semplicemente copia l'indice di riga... L2=zeros ([22 2]); for i=1:22 L2(i,1)=i; end poi la riempi L(M,2)=L(M,2)+1; poi ordini la matrice in modo decrescente mantenendo la coppia "valore", "occorrenze". (ci sarà un metodo per l'ordinamento, ora non ricordo, digita "help sort") fatto ciò, basta fare un ciclo riga=1; while L2(riga, 2)>0 //cioè considera solo i numeri inseriti almeno una volta disp(L2(riga, 1)) if(L2(riga, 1))>media segno='+'; else segno='-'; end for occ=1:L2(riga, 2) disp(segno); end riga++; end in sostanza è così... bisogna solo vedere se il disp va a capo o meno. Se va a capo bisogna usare qualche altra funzione di stampa che non va a capo, ma la sotanza è quella
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB Ultima modifica di leox@mitoalfaromeo : 04-11-2006 alle 16:32. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Sep 2003
Messaggi: 686
|
si scusa, ho sbagliato io a mettere all'inizio i numeri, in realtà andavano da 1 a 22
cmq grazie, mi hai tolto da una situazione intricata, oltre che farmi vedere come usarer sto ciclo for, che mi è sempre stato spiegato nella forma tipo 1:1:22, e per cui della forma 1:22 ignoravo l'esitenza, oltre ad altri piccoli accorgimenti qua e là tra le righe.. ciau e grazie ancora |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
|
Quote:
se vuoi fare un ciclo solo sui numeri dispari per esempio puoi fare 1:2:342342341 e verrà 1,3,5 ecc
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:58.


















