Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

confronto tra vettori MATLAB

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

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

0
voti

[1] confronto tra vettori MATLAB

Messaggioda Foto Utentecatta » 23 feb 2013, 20:31

Salve a tutti,
avrei bisogno di un consiglio in merito a quanto segue.
Ho un vettore es. a=[ 2 6 8 ] e un vettore b=[ 3 4 2 9 1 6 7 8 ] e in sostanza vorrei che nel vettore b venissero tolti gli elementi che sono nel vettore a, e magari sostituiti con NaN, ovvero ottenere: b=[3 4 NaN 9 1 NaN 7 NaN].
Volevo sapere se ci fosse una funzione che possa fare questo. Potrei scrivere una piccola funzione. Il problema è che le dimensioni dei due vettori cambiano sempre siccome sono all'interno di un ciclo for. Grazie a chiunque possa darmi una mano:)
Avatar utente
Foto Utentecatta
5 3
New entry
New entry
 
Messaggi: 51
Iscritto il: 9 ott 2008, 11:36

0
voti

[2] Re: confronto tra vettori MATLAB

Messaggioda Foto UtenteDirtyDeeds » 23 feb 2013, 21:23

Usa la funzione setdiff.

Per esempio (non testato)

Codice: Seleziona tutto
[c,ib] = setdiff(b,a);
d = NaN(size(b));
d(ib) = c;
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

0
voti

[3] Re: confronto tra vettori MATLAB

Messaggioda Foto Utentecatta » 24 feb 2013, 12:13

Grazie, in effetti è la funzione che fa per me, non la conoscevo. L'unica cosa che mi lascia perplesso sono come vengono dati i valori in uscita alla funzione. es
Codice: Seleziona tutto
a = [3 6 2 1 5 1 1]; b = [2 4 6 3];
>> [C,i] = setdiff(a,b)


restituisce:

Codice: Seleziona tutto
C= 1 5
i=1 7


ora se non ho capito male, setdiff(a,b) trova gli elementi di a che non sono contenuti in b, nell'esempio appunto 1 e 5, non capisco però come indice i=1 7. Mi sarei aspettato più un i=4 5 6 7 ovvero gli indici di a corrispondentia valori che non sono contenuti nel vettore b.
Avatar utente
Foto Utentecatta
5 3
New entry
New entry
 
Messaggi: 51
Iscritto il: 9 ott 2008, 11:36

0
voti

[4] Re: confronto tra vettori MATLAB

Messaggioda Foto UtenteDirtyDeeds » 24 feb 2013, 12:31

Sei sicuro del vettore i che hai riportato? Con i valori dell'esempio dovresti avere
catta ha scritto:non capisco però come indice i=1 7


Uhm, sei sicuro dell'indice? A me sembra che dovrebbe essere i = [7 5].

catta ha scritto:Mi sarei aspettato più un i=4 5 6 7 ovvero gli indici di a corrispondentia valori che non sono contenuti nel vettore b.


Quelle funzioni trattano i vettori come insiemi, quindi, per esempio, [1 1] e [1 1 1 1 1] sono equivalenti al vettore [1]. Se hai bisogno di mantenere i valori ripetuti, bisogna trovare un'altra soluzione: non avendo matlab installato, però, non riesco a fare prove.
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

0
voti

[5] Re: confronto tra vettori MATLAB

Messaggioda Foto Utentecatta » 24 feb 2013, 12:46

si scusa mi son sbagliato , non so perché ho scritto 1 7 il risultato degli indici è 7 5 :-)
Mi è anche più chiaro il discorso che siano funzioni che trattano il vettore come insieme, viene spiegato il perché i valori ripetuti non siano considerati. grazie ancora, approfondirò comunque l'argomento!!
Avatar utente
Foto Utentecatta
5 3
New entry
New entry
 
Messaggi: 51
Iscritto il: 9 ott 2008, 11:36


Torna a Programmi applicativi: simulatori, CAD ed altro

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti