Verfasst am: 12.07.2012, 15:22
Titel: Zwei Arrays miteinander falten
Hallo zusammen,
ich habe ein Problem, bei dem Ihr mir hoffentlich helfen könnt
Undzwar soll ich eine Funktion schreiben die als input zwei Arrays kriegt und als output die Faltung dieser beiden Arrays liefert.
Von der Idee her soll sie so ähnlich wie MATLABs 'conv()' funktionieren.. sprich;
Die allgemeine Formel ist ja in der Doku zu dem Befehl conv() angegeben. Diese läßt sich mit for Schleifen umsetzen. Mach doch mal einen Vorschlag dafür...
%Laenge des Ergebnis-Vektors
vFiltSig_size = size(vSig,1)+ size(vImpRes,1)-1
%Testen des Ergebnisses mit der Matlab-Funktion;
testErgebnis = conv(vSig, vImpRes)
%Initialvektor der Laenge 'vFiltSig_size'
w=zeros(vFiltSig_size,1)
%da erster Wert immer gleich ist, kann er direkt eingetragen werden
w(1)=vSig(1)*vImpRes(1)
i=2;
for k=2:vFiltSig_size
faltWert=0;
for j=1:i
faltWert = faltWert + (vSig(j)*vImpRes((k-j)+1));
w(k) = faltWert
if(i < size(vImpRes))
i = i+1;
end end end
wie gesagt ab dem dritten wert stimmts nicht mehr. hab schon gedebuggt.. weiß ungefähr woran es liegt (bspw. dass mein k nicht 'hochgezählt' wird), komme aber dennoch nicht wirklich voran
ps: die doku hab ich mir bereits mehrmals angeguckt und darauf basierend hab ich auch den code implementiert..aber anscheinend hab ich irgendwo n denkfehler:(
Hallo 'Forum-Meister' DSP
zuerst einmal vielen lieben Dank für die recht schnelle Hilfe! Der Output-vektor ist immerhin gewachsen und hat vier statt zwei richtige Werte! )) ab dem fünften Wert schmeißt er mir n exception.. ('index exceeds matrix dimensions')..
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.