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
Domanda per codice
-
MarioBelotti
0 2 - Messaggi: 11
- Iscritto il: 21 dic 2009, 11:45
0
voti
[3] Re: Domanda per codice
il comando find ti da gli indici degli elementi diversi da 0 a me servirebbero gli elementi.
0
voti
[4] Re: Domanda per codice
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?

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)



