Estrarre elementi da vettori

di il
6 risposte

Estrarre elementi da vettori

Ciao a tutti!
In pratica ho due vettori, chiamiamoli A e B, possono avere un diverso numero di elementi, alcuni di essi possono essere coincidenti, e sono ordinati.
Ho bisogno di creare due vettori, C e D, tali che:

C contenga gli elementi di B che A non possiede
D contenga gli elementi di A che B non possiede.

Per esempio:
A=[1/4 1/4 1/2 3/4]
B=[1/4 1/3 1/2]
voglio i vettori seguenti
C=[1/3]
D=[1/4 3/4]

come faccio????

6 Risposte

  • Re: Estrarre elementi da vettori

    Ciao,

    prova il comando setdiff (guarda anche nell'help di Matlab, aiuta sempre).

    C = setdiff(A, B);
    D = setdiff(B, A);
  • Re: Estrarre elementi da vettori

    Grazie!!!
    ma se volessi 'preservare' la molteplicità dell'elemento?
    cioè
    A=[1/4 1/4 1/2 1/2];
    B=[1/3];
    e volessi
    C=[1/3];
    D=[1/4 1/4 1/2 1/2];
    ??
  • Re: Estrarre elementi da vettori

    Prova cosi:

    C = B(~ismember(B,A)); % elementi di B non presenti in A
    D = A(~ismember(A,B)); % elementi di A non presenti in B
  • Re: Estrarre elementi da vettori

    Perdona se abuso ancora della tua pazienza....solo che se in uno dei due vettori compare due volte un elemento e nell'altro una sola non me lo restituisce...ovvero, sempre con un esempio

    A=[1/3 1/3 1/2 2/5];
    B=[1/2 1/2 3/5 4/5 4/5];

    io vorrei

    C=[1/2 3/5 4/5 4/5];
    D=[1/3 1/3 2/5];

    mentre in quel modo non considera il fatto che il valore 1/2 in B sia presente due volte e in A solo una....
  • Re: Estrarre elementi da vettori

    Mmmm, ho capito ora cosa intendi fare, ma sinceramente non credo esista un comando unico per farlo, in questo caso sarebbe da scrivere un po di codice per avere la flessibilità che cerchi.

    posso chiederti però a cosa ti serve una funzione di questo tipo?
    non mi pare un utilizzo comune..
  • Re: Estrarre elementi da vettori

    Sto usando le NURBS per costruire alcune superfici, tra queste le superfici rigate.
    Nel momento in cui do in input i vati dati che definiscono le due curve NURBS che poi andranno a costruire la superficie, devo raffinare i vettori dei nodi, e quindi mi serve un vettore che consideri tutti i nodi delle due curve con le loro molteplicità.

    Avevo provato a scrivere qualcosa io, ma non è che sia proprio ferrata!
    Ad ogni modo grazie!!
Devi accedere o registrarti per scrivere nel forum
6 risposte