Domanda per codice

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

Avatar utente
Foto UtenteMarioBelotti
0 2
Messaggi: 11
Iscritto il: 21 dic 2009, 11:45
0
voti

[1] Domanda per codice

Messaggioda Foto UtenteMarioBelotti » 8 gen 2010, 21:17

ho un vettore esa= [0 0 0 0 0 0 0 5 0 0 0 0 2 4 0 0]
se voglio creare un vettore solo con i numeri non uguali a zero

for i=1:1:length(a)
if a(i)>0
na=[a(i)]
end
end

è giusto perche mi crea il vettore ma non toglie gli zeri

Avatar utente
Foto Utentephylum
6.191 5 7 12
G.Master EY
G.Master EY
Messaggi: 3217
Iscritto il: 9 ott 2007, 12:40
0
voti

[2] Re: Domanda per codice

Messaggioda Foto Utentephylum » 8 gen 2010, 22:45

prova un piu' semplice nz = nonzeros(esa)
\int_{}tella
Immagine

Avatar utente
Foto UtenteMarioBelotti
0 2
Messaggi: 11
Iscritto il: 21 dic 2009, 11:45
0
voti

[3] Re: Domanda per codice

Messaggioda Foto UtenteMarioBelotti » 8 gen 2010, 22:48

il comando find ti da gli indici degli elementi diversi da 0 a me servirebbero gli elementi.

Avatar utente
Foto Utentemaxstu
0 1
Messaggi: 34
Iscritto il: 16 dic 2009, 22:29
0
voti

[4] Re: Domanda per codice

Messaggioda Foto Utentemaxstu » 9 gen 2010, 14:35

MarioBelotti ha scritto:for i=1:length(a)
if a(i)>0
na=[a(i)]
end
end


Sinceramente scritto così non mi sembra che crei un vettore ma una variabile na che alla fine del ciclo varrà na = 4. :?:

Così potrebbe essere(fa un po' schifo ma per capire è ok):

Codice: Seleziona tutto

a= [0 0 0 0 0 0 0 5 0 0 0 0 2 4 0 0];
na = zeros(1,length(a));
j = 0;
for i=1:length(a)
     if a(i)>0
         j = j+1;
         na(j) = a(i);
     end
end
nonzer_vector = na(1, 1:j);


Ma non conviene utilizzare tale codice se già hai una funzione pronta all'uso come nonzeros.

La funzione find non ti serve perché se al vettore esa applichi nonzeros come dice phylum ti ritorna già un vettore di dimensioni pari al numero di elementi non nulli e con gli elementi non nulli in ordine.

Quindi non capisco perché utilizzi find?


Torna a “Programmi applicativi: simulatori, CAD ed altro”