Ciao a tutti,
volevo avere un consiglio su una cosa che penso sia decisamente semplice ma che non riesco a implementare,
Dovrei semplicemente shiftare a destra o sinistra un vettore nel momento in cui si verifica una determinata condizione. esempio a=[1 2 3 4 5 6 6 7 ], devo shiftare a sx a se vengono trovati due elementi uguali consecutivi ( i due 6 per intenderci) , quindi vorrei come risultato a=[1 2 3 4 5 6 7 ]. volevo sapere se ci fosse una funzione gia implementata in Matlab per fare questa semplice operazione senza bisogno di scrivere il semplice algoritmo.
Grazie!!!
Shiftare un array in Matlab
-
dimaios
30,2k 7 10 12 - G.Master EY

- Messaggi: 3381
- Iscritto il: 24 ago 2010, 14:12
- Località: Behind the scenes
2
voti
[2] Re: Shiftare un array in Matlab
Ce ne sono diversi di metodi ma secondo me uno dei più eleganti ed efficienti è il seguente :
Codice: Seleziona tutto
a=[1 2 3 4 5 6 6 7 ];
b=a([1,diff(a)]~=0);
Ingegneria : alternativa intelligente alla droga.
0
voti
[4] Re: Shiftare un array in Matlab
già che ci sono ne approfitto, il codice che mi hai scritto prima (perfettamente funzionante) fa lo shift solo se si verifica una certa condizione corretto?? se invece volessi fare uno shift a prescindere da una certa condizione? es a=[1 2 3 4 5 6 7 8 ] shiftarlo a sx/dx di 2,3.. posti? grazie ancora
-
dimaios
30,2k 7 10 12 - G.Master EY

- Messaggi: 3381
- Iscritto il: 24 ago 2010, 14:12
- Località: Behind the scenes
1
voti
[5] Re: Shiftare un array in Matlab
Non capisco bene cosa intendi.
Se vuoi eliminare un numero qualsiasi di elementi dello stesso tipo il comando è il medesimo :
Es.
Fornisce come risultato :
Se vuoi eliminare un numero qualsiasi di elementi dello stesso tipo il comando è il medesimo :
Es.
Codice: Seleziona tutto
a = [1 2 2 2 2 2 3 4 5 6 6 6 6 6 6 6 6 7 ];
b=a([1,diff(a)]~=0);
Fornisce come risultato :
Codice: Seleziona tutto
b = [ 1 2 3 4 5 6 7 ];
Ingegneria : alternativa intelligente alla droga.
-
dimaios
30,2k 7 10 12 - G.Master EY

- Messaggi: 3381
- Iscritto il: 24 ago 2010, 14:12
- Località: Behind the scenes
2
voti
[7] Re: Shiftare un array in Matlab
Adesso la domanda è chiara.
Basta modificare l'indicizzazione del vettore.
Oppure in generale :
ATTENZIONE : All'interno delle parentesi c'è l'intervallo degli indici e non quello dei valori come si potrebbe fraintendere dall'esempio in oggetto.
Era meglio fare questo esempio :
con risultato
Basta modificare l'indicizzazione del vettore.
Codice: Seleziona tutto
a = [1 2 3 4 5 ];
b = a( 3:5 );
Oppure in generale :
Codice: Seleziona tutto
Nshift = 3;
a = [1 2 3 4 5 ];
b = a( Nshift:length(a) );
ATTENZIONE : All'interno delle parentesi c'è l'intervallo degli indici e non quello dei valori come si potrebbe fraintendere dall'esempio in oggetto.
Era meglio fare questo esempio :
Codice: Seleziona tutto
a = [7 28 32 41 56];
b = a( 3:5 );
con risultato
Codice: Seleziona tutto
b = [ 32 41 56]
Ingegneria : alternativa intelligente alla droga.
-
DirtyDeeds
55,9k 7 11 13 - G.Master EY

- Messaggi: 7012
- Iscritto il: 13 apr 2010, 16:13
- Località: Somewhere in nowhere
0
voti
[9] Re: Shiftare un array in Matlab
Se ti interessa solo eliminare le ripetizioni, puoi anche utilizzare la funzione unique.
It's a sin to write
instead of
(Anonimo).
...'cos you know that
ain't
, right?
You won't get a sexy tan if you write
in lieu of
.
Take a log for a fireplace, but don't take
for
arithm.
instead of
(Anonimo)....'cos you know that
ain't
, right?You won't get a sexy tan if you write
in lieu of
.Take a log for a fireplace, but don't take
for
arithm.
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)


