Forum: Digitale Signalverarbeitung / DSP / Machine Learning Dezimation mit Simulink


von Andreas K. (zero_ahnung)


Angehängte Dateien:

Lesenswert?

Hi Leute,
ich möchte gern einen einfachen Dezimierer in Simulink basteln.
Da meine Daten als 131072x1 frame based daten vorliegen, möchte ich nach 
der Filterung einfach jeden L´ten (L=Dezimierungsfaktor) Wert entnehmen 
und neu zusammenbauen.
Dazu habe ich versucht eine For-Schleife mit Hilfe einer Matlabfunktion 
einzubinden.

Leider bin ich dazu nicht in der Lage.
Fehlermeldung: "Size mismatch (size [1 x :?] ~= size [0 x 0])..."

Code der Schleife:

function y = fcn(u,L)
%#codegen
 v=[];
 w=length(u);

 for i = 1:L:w
      x = u(i);
      v = [v, x];
 end
 y=v;

Bitte dringend um Hilfe, das kann doch nicht so schwer sein.

Danke
Andreas

von Andreas K. (zero_ahnung)


Lesenswert?

Problem gelöst,
in meine Fall lautet der Richtige Code:

function y = fcn(u,L)
%#codegen
w = length(u)-1;
v = zeros(1,(w));


for idx = 1:L:w
      x = u(idx);
      v(idx) = real(x);
end
y=v;


Für diejenigen, die beim suchen mal auf dieses Thema stoßen:

der eigentlich dimensoinsfehler lag in der Vordefinition des Vektors v 
sowie einem falschen Schleifenendwert w.

von Andreas K. (zero_ahnung)


Angehängte Dateien:

Lesenswert?

Und es ist doch nicht richtig gelöst!

Schreibe ich:

 v = zeros(z,1) %Was nichts ändern sollte, da z=4 ist

erhalte ich eine Fehlermeldung
Ersetze ich aber auch z zu

z = ((length(u))/2) %(Was eigentlich genau das gleiche ist, da L=2 ist)

funktioniert wieder nichts mehr.

Langsam weiss ich echt nicht mehr weiter :-/


Bitte um Hilfe!

Gruß

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.