Forum: Digitale Signalverarbeitung / DSP / Machine Learning MATLAB - Vektoren (vgl. upsample)


von Martin (Gast)


Lesenswert?

Wie kann man folgendes einfach realisieren (ohne Schleife):

aus Vektor a:
a=[1 0 0 1 0 1 1 0];

soll Vektor b werden (jeder Wert soll z.B. hier 3 mal im neuen Vektor 
nacheinander vorkommen):
b=[1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0];

Es gäbe die Möglichkeit des upsamplings, da wird aber der Rest immer mit 
Nullen aufgefüllt.
b=upsample(a,3);
1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0

von Detlef _. (detlef_a)


Lesenswert?

a=[1 0 0 1 0 1 1 0];
b=repmat(a,3,1);
b=b(:).';

repmat setzt Dir a dreimal 'übereinander', das b(:) zieht die 
Einzelspalten raus und hängt sie 'übereinander', das .' legt das Ding 
flach.

Cheers
Detlef

: Bearbeitet durch User
von Martin (Gast)


Lesenswert?

Super, vielen Dank!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.