WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Vier Signale und zwei Kriterien in eine Funktion bringen

 

Peter_G

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.08.2012, 19:50     Titel: Vier Signale und zwei Kriterien in eine Funktion bringen
  Antworten mit Zitat      
Hallo,

ich habe ein für mich unlösbares Programmierproblem, meine Fähigkeiten steigere ich zwar, aber mein Newbie-Status konnte ich noch nicht ablegen. Wink

Ich habe insgesamt vier Signale und zwei Kriterien

A nimmt Werte von 0 bis 80 an, mich interessieren jedoch nur die Werte bis 60. Die Nummern stehen dabei für die IDs von Gefäßen die befüllt werden.
B beinhaltet die Füllhöhe.
C beinhaltet die Füllgeschwindigkeit.
D ist die Wechselzeit für eine bestimmte Komponente.
Kriterium 1 die Füllhöhe soll in 5 Sekunden mindestens 10cm zunehmen.
Kriterium 2 die Einfüllgeschwindigkeit soll für mindestens 6 Sekunden 100ml/s betragen.

Die Abtastrate der Signale beträgt 50Hz.


Das soll die Funktion können:
Sie soll das Signal A auslesen und gucken ob aufeinanderfolgende Werte gleich sind. (quasi eine Sequenzbildung)
Ist das der Fall, dann soll mindestens eines der zwei Kriterien erfüllt sein.
Ist auch das der Fall, dann soll die Wechselzeit in das neue Signal D_neu übergeben werden.

Anders ausgedrückt:

Immer dann wenn ein bestimmtes Gefäß befüllt wird soll geguckt werden ob die Änderung der Füllhöhe in einer bestimmten Zeit oder die Füllgeschwindigkeit eingehalten werden. Wenn das alles so ist, dann soll die Wechselzeit für eine bestimmte Komponente in ein neues Signal geschrieben werden.


Das habe ich bisher:
Code:

delta_x=10;          %Delta der Füllhöhe in cm
time_delta_x=5;      %Delta der Füllzeit in Sekunden
tdx=time_delta_x*50; %Delta der Füllzeit multipliziert mit der Abtastrate -> Indiciesbereich

delta_v=100;                         %mindest Füllgeschwindigkeit in ml/s
time_delta_v=6;                      %Zeit in Sekunden in der die min.Füllgeschwindigkeit nicht unterschritten sein darf
tdv=time_delta_v*50;                 %Indiciesbereich für den die Füllgeschwindigkeit das Minimum überschreiten muss

if tdx>tdv           %guckt welches Zeit_Delta länger ist und wählt das längere als Startpunkt
    td=tdx;
else
    td=tdv;
end

k=1+td;

while k-td<length(A)
if ((A(k)-A(k+1)==0) & A(k)<60)                                         %Die Differenz zweier aufeinanderfolgender Werte muss null sein und der Wert muss unter 60 sein.
        if (B(k)-B(k-tdx)>delta_x)|(length(C(k)-C(k-tdv))>delta_v)  %Kriterien müssen erfüllt sein. Zweites Kriterium ist sicher falsch angewandt.
            D_neu(k) = D(k);
        end
    k=k+1
else
    D_neu(k) = NaN; %Wenn die obrigen Kriterien nicht erfüllt wurden, dann soll D den Wert NaN annehmen.
    k=k+1
end      
end
 



Ist mein Weg prinzipiell richtig oder bin ich völlig falsch davor?

Vielen Dank schonmal für eure Hilfe.
Lieben Gruß und einen schönen Abend

Peter_G


Peter_G

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2012, 17:04     Titel:
  Antworten mit Zitat      
Ich mag gar nicht drängeln, aber raufe mir bald die Haare. Embarassed
Hat niemand einen Tipp? *liebguck*
 
Peter_G

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2012, 16:04     Titel:
  Antworten mit Zitat      
Ich habe meinen Code geringfügig abgewandelt und er ist wenigsten lauffähig, das ausgegebene, neue Signal ist aber nicht valide.
Irgendwo im Ursprungscode muss ein Fehler sein, aber ich finde ihn nicht.

Ein Bekannter riet mir einfach über die Indicies zu gehen, aber das krieg ich gar nicht hin. Laughing

Ich glaube MATLAB und ich werden nie gute Freunde. Laughing
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.08.2012, 17:25     Titel:
  Antworten mit Zitat      
Hallo,

bei solchen Fragen hilft es, einen Testdatensatz bereitzustellen, welche Ergebnisse du erwartest und inwiefern die erhaltenen Resultate von den erwarteten abweichen.

Vor allem aber solltest du den "geringfügig abgewandelten" Code auch posten, sonst müsste man hier ja deine Arbeit nochmal machen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.