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
9 messaggi
• Pagina 1 di 1
0
voti
2
voti
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.
-

dimaios
30,2k 7 10 12 - G.Master EY

- Messaggi: 3381
- Iscritto il: 24 ago 2010, 14:12
- Località: Behind the scenes
0
voti
Grazie 1000, dunque la funzione "diff" fa la differenza di ognì elemento con il suo adiacente e se questo è uguale a zero shifta di un a sinistra corretto? grazie ancora
0
voti
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
1
voti
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
0
voti
intendevo fare un semplice shift. cioè
a=[1 2 3 4 5 ]; voglio shiftarlo di due posti a sinistra e ottenere a=[3 4 5 ];
a=[1 2 3 4 5 ]; voglio shiftarlo di due posti a sinistra e ottenere a=[3 4 5 ];
2
voti
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.
-

dimaios
30,2k 7 10 12 - G.Master EY

- Messaggi: 3381
- Iscritto il: 24 ago 2010, 14:12
- Località: Behind the scenes
0
voti
si si in effetti l'esempio poteva trarre in inganno, comunque avevo capito che erano gli indici, grazie ancora!!
0
voti
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.-

DirtyDeeds
55,9k 7 11 13 - G.Master EY

- Messaggi: 7012
- Iscritto il: 13 apr 2010, 16:13
- Località: Somewhere in nowhere
9 messaggi
• Pagina 1 di 1
Torna a Programmi applicativi: simulatori, CAD ed altro
Chi c’è in linea
Visitano il forum: Nessuno e 1 ospite

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)
