Danke für die Antwort.
Ich will nur die Daten Plotten, die am kleinsten sind, das ist die Kurve, die ganz oben ist, weil die Zahlen unter 0 liegen bzw. negativ sind.
Ich habe eine Reihe an "Ergebnissen" (Datei ist hochgeladen für dich) und eine Schleife wäre hier recht hilfreich. Sie soll mir nur die Kurve ausspucken, die jeweils ganz oben ist. Bzw. soll sie mir immer nur die KurveN ausspucken, die zwischen 0 und -300 liegt.
Sobald du die Datei Ergebnisse anklickst, öffnen sich mehrere Kategorien, wir bleiben nur unter Metal und betrachten dort jeweils alle einzelnen XY-Ergebnisse.
Zum Plotten habe ich das Skript "test" hochgeladen. Das bezieht sich speziell auf X6Y9.
Wie kann ich eine Art Schleife bauen für X(i)Y(j), damit alle Positionen bearbeitet werden können und je Position geplottet wird?
So kannst du nur die Daten zw. 0 und 300 plotten (hattest du mit xBest, yBest quasi schon):
Code:
load('Ergebnisse.mat');
x = Radar.Metal.X6Y9.data(:,1);
y = Radar.Metal.X6Y9.data(:,2);
log_y = (-300 < y & y < 0); % logischer Vektor: 1 wenn Wert im Bereich 0-300, sonst 0
y_neu = y(log_y); % enthält nur noch die Werte im Bereich 0-300
x_neu = x(log_y); % zugehörige x
ii = 1;
for ix = 1:10 for iy = 1:15
name = ['X', num2str(ix), 'Y', num2str(iy)];
x = Radar.Metal.(name).data(:,1);
y = Radar.Metal.(name).data(:,2);
log_y = (-300 < y & y < 0); % logischer Vektor: 1 wenn Wert im Bereich 0-300, sonst 0
y_neu = y(log_y); % enthält nur noch die Werte im Bereich 0-300
x_neu = x(log_y); % zugehörige x
sieht gut aus. Ich weiß nicht warum, nur bei td = [0 x(end,1)] wollte er nicht und hat gesagt, "Attempted to access x(0,1); index must be a positive integer or logical. Error in Final_Plott_Metal (line 15) td = [0 x(end,1)];".
Deswegen habe ich im Command Window nach td geschaut.
td=[0 7969105];
somit funktioniert es
Danke Seban und Freitag der 13. war somit ein Glückstag!
_________________
bei td = [0 x(end,1)] wollte er nicht und hat gesagt, "Attempted to access x(0,1); index must be a positive integer or logical. Error in Final_Plott_Metal (line 15) td = [0 x(end,1)];".
Dh. dass x ein Vektor der Länge 0 ist, sprich leer. Darauf kann man natürlich nicht zugreifen. Ich hab aber gerade mal geschaut, wenn ich das von mir gepostete zweite Skript laufen lasse, ist x nie leer. Irgendwas musst du also geändert haben, sei es am Skript oder an den Daten.
EB hat Folgendes geschrieben:
habe also statt x(end,1) für die Spaltenangabe von td direkt den Wert 7969105eingesetzt!
Ob das eine gute Idee ist? Der letzte Wert in deinen x ist ja nicht jedes mal 7969105. Ganz im Gegenteil, bei mir liegt x(end) zw. 14203603 und 17539345 und ist kein mal 7969105.
Schau also lieber noch mal nach, ob in deinem Skript passiert was du dir vorstellst.
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.