Individuare gli zeri in un vettore

di il
1 risposte

Individuare gli zeri in un vettore

Salve, sono nuovo del forum e spero che qualcuno possa aiutarmi.. ho due problemi da risolvere:

1) dato un vettore, ad esempio a=[6 3 1 0 0 0], vorrei sapere se esiste un comando specifico per indiviaduare le posizioni assunte dagli zeri al suo interno; ho trovato il comando:

[x loc]=min(a)

ma questo mi da solo la posizione del primo zero mentre a me serve la posizione di tutti gli zeri.

2)data una matrice, ad esempio A= [2 1 1 0 0 0; 0 0 0 0 0 0; 1 3 0 0 0 0; 0 0 0 0 0 0; 1 1 2 0 0 0]
mi piacerebbe sapere se esiste un modo semplice per eliminare contemporaneamente tutte le righe di soli zeri; non riesco a farlo utilizzando un ciclo for dato che il numero di righe ad ogni iterazione diminuisce e di conseguenza mi da errore. Sicuramente un problema risolvibile ma non sono molto esperto con programmazione Matlab.

Se qualcuno ha una soluzione per me gliene sarò molto grato..

1 Risposte

  • Re: Individuare gli zeri in un vettore

    Ciao.
    Allora:

    1) usare il comando "min" per questo problema in generale è sbagliato, nel senso che se avessi numeri negativi, non ritornerebbe la posizione degli zeri.
    Puoi usare questi comandi:

    index = find(v == 0); % ritorna gli indici in cui il tuo vettore vale zero
    v(index) % restituisce il vettore di soli zeri che hai selezionato

    2) Non conosco un comando specifico per fare quello che cerchi.
    Però in generale, anzichè trovare la riga di zeri ed eliminarla subito (che ti riduce di volta in volta le dimensioni della matrice di partenza), potresti semplicemente scorrere completamente la matrice, individuare quali righe hanno tutti 0, e infine selezionare la matrice le righe della matrice iniziale, escludendo le righe che hai trovato precedentemente.

    Spero ti sia di aiuto l'algoritmo. Se ti serve anche il codice fammi sapere

    Ciao
Devi accedere o registrarti per scrivere nel forum
1 risposte