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

Signal - Look up Table - Error

 

JaSoIstEs
Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 16.09.2019, 12:40     Titel: Signal - Look up Table - Error
  Antworten mit Zitat      
Hi Leute,

ich habe folgendes Signal (siehe Anhang).

Ich würde jetzt gerne die blaue Kurve in ein Look-Up-Table packen.


Nur bekomme ich hier das Problem das, dass ganze nicht monoton steigend oder fallend ist. Wie umgehe ich das Problem ohne das Signal zu verfälschen?


Es wird nur eine 1D Tabelle. Input ist die X-Achse und Output die Y-Achse.


Ich danke euch im Voraus.


LG

Signal.png
 Beschreibung:

Download
 Dateiname:  Signal.png
 Dateigröße:  45.1 KB
 Heruntergeladen:  342 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.09.2019, 14:58     Titel:
  Antworten mit Zitat      
Hallo,

nur die x-Werte (einzutragen bei Breakpoints1) müssen streng monoton sein. Die y-Werte (Table data) können rauf und runter gehen wie sie lustig sind.

Bei deiner blauen Kurve scheint es mir so, dass sie ganz am Ende nochmal nach "links oben" geht. Entweder diesen Datenpunkt weglassen oder die x-Werte sortieren (und die y-Werte mit ihnen).
Code:
[xNew, idx] = sort(x);
yNew = y(idx);


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 17.09.2019, 16:39     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine Antwort.
Ah ok doch so einfach Embarassed .

Blöde Frage die zweite Zeile sortiert mir dann so auch die y-Werte?

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 17.09.2019, 16:45     Titel:
  Antworten mit Zitat      
Hmm…

jetzt habe ich das mal probiert und bekomme immer noch den Fehler.
Wie kann das sein obwohl die Daten sortiert worden sind?


Edit:

Die Zahlen bleiben an der Stelle gleich... das wird wohl das Problem sein. Das ist dieses "nach links oben" gehen.

2019-09-17_17-53-12.png
 Beschreibung:
Data - Line 1634

Download
 Dateiname:  2019-09-17_17-53-12.png
 Dateigröße:  4.76 KB
 Heruntergeladen:  321 mal
2019-09-17_17-44-12.png
 Beschreibung:
Error-Massage

Download
 Dateiname:  2019-09-17_17-44-12.png
 Dateigröße:  15.25 KB
 Heruntergeladen:  325 mal
2019-09-17_17-43-39.png
 Beschreibung:
LookUp-Table

Download
 Dateiname:  2019-09-17_17-43-39.png
 Dateigröße:  43.38 KB
 Heruntergeladen:  343 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.09.2019, 21:19     Titel:
  Antworten mit Zitat      
Hallo,

gleiche x-Werte sind für Lookup-Tables nicht sinnvoll. Welchen y-Wert soll der Lookup-Table denn dann als Rückgabeargument zurückgeben?

Eine Möglichkeit ist, die y-Werte für gleiche x-Werte zu mitteln. Ob das für die Anwendung sinnvoll ist, musst du entscheiden.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 18.09.2019, 09:55     Titel:
  Antworten mit Zitat      
Hallo Harald,

verstehe.

Wie kann ich denn jetzt in so einem Vektor reingehen und sinnvoll automatisiert die "gleichbleibenden" Werte in x und y sowie diese "Dreher" die am Ende des Signals entstehen löschen?


LG
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 18.09.2019, 15:19     Titel:
  Antworten mit Zitat      
So hab mir das jetzt geschrieben um die Daten LookUp-Table tauglich zu machen:

Code:

[xNew, idx] = sort(x);
yNew = y(idx);

yNew = yNew(xNew >= 0);
xNew = xNew(xNew >= 0);

for i = 1:length(xNew)-1
    if(round(xNew(i,1),4) == round(xNew(i+1,1),4))
        xNew(i+1,1) = NaN;
        yNew(i+1,1) = NaN;
    end
end

yNew = yNew(~isnan(yNew));
xNew = xNew(~isnan(xNew));

for i = 1:length(xNew)-1
    if(xNew(i,1) > xNew(i+1,1))
        IDX_Del = i;
        break;
    end
end

if(exist('IDX_Del','var'))
    for ii = IDX_Del:length(xNew)-1
        xNew(ii,1) = NaN;
        yNew(ii,1) = NaN;
    end
    yNew = yNew(~isnan(yNew));
    xNew = xNew(~isnan(xNew));
end
 


Ja ist nicht so sauber und effizient geschrieben Embarassed ... aber mir ging es jetzt um eine erste "automatisierte" Lösung.


Sonst immer her mit den Verbesserungsvorschlägen.
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 18.09.2019, 16:02     Titel:
  Antworten mit Zitat      
Ich habe immer noch gleiche Zahlen drin obwohl ich doch diesen Vergleich habe?
Siehe hierfür den Code oben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.09.2019, 16:07     Titel:
  Antworten mit Zitat      
Hallo,

weil du immer mit dem vorherigen Wert vergleichst und den aber im vorherigen Schritt ggf. auf NaN gesetzt hast.

Wenn du das erste Paar auf NaN setzt, sollte das nicht passieren:
Code:
for i = 1:length(xNew)-1
    if(round(xNew(i,1),4) == round(xNew(i+1,1),4))
        xNew(i,1) = NaN; % <-- i statt i+1
        yNew(i,1) = NaN; % <-- i statt i+1
    end
end


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 2024 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.