Verfasst am: 26.11.2014, 12:48
Titel: Nullstelle eines signals bestimmen
Hallo zusammen ,
ich habe folgendes Problem und hoffe , dass mir jemand helfen kann.
Ich möchte die Nullstellen eines sinusförmigen Signals in einem gegebenen Intervall von Sampels bestimmen. Dafür habe ich folgende Funktion geschrieben:
Code:
function[nullpunkte_intervall] = nullpunkte(y,s1,s2,fa) % Die Funktion detektiert, ob es sich nullpunkte in einem Sampelintervall
%befinden. Wenn ja, dann gibt sie einen Vektor mit den Werten der vier
%sampels, die den Nullpunkt enthalten.
% t = Zeitvektor % y = Funktionswert y(t) % fa = abtastfrequenz % s1 = startsampel % s2 = delta_sampel
ta = 1/fa;
x = length(y);
t = (0:ta:x);
s1 = s1*ta;
s2 = s2*ta;
s3 = s1+s2;
%sampel_intervall wird bestimmt
s_intervall = s1 <= t & t <= s3;
% speichert Messwerte in einem Vektor
werte = y(s_intervall);
n = length(werte);
i = 1;
%schleife zur Bestimmung der Nullpunkten
while( i <= n ) if(werte(i) > 0 && werte(i+1) > 0)
i = i+1;
nullpunkte_intervall = [0000];
elseif(werte(i) < 0 && werte(i+1) < 0)
i = i+1;
nullpunkte_intervall = [0000];
elseif(werte(i) < 0 && werte(i+1) > 0)
nullpunkte_intervall = [werte(i-1),werte(i),werte(i+1),werte(i+2)];
i = n+1;
elseif(werte(i) > 0 && werte(i+1) < 0)
nullpunkte_intervall = [werte(i-1),werte(i),werte(i+1),werte(i+2)];
i = n+1;
end end
Deine Abbruchbedingung der Schleife i<=n ist nicht korrekt. Der Index i darf bis maximal n gehen, aber du versuchst mit i+1 und i+2 auf einen Bereich in Werte zuzugreifen, der nicht existiert. Wenn i=1 ist werte(i-1) aber auch unzulässig, da der Index immer mit 1 beginnt.
vielen dank für deine Hilfe.
Du hast echt ein Bierchen verdient
Einstellungen und Berechtigungen
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.