In folgenden Code habe ich eine For-schleife. Die Schleife durchläuft das Line-array C, das eine bestimmte Anzahl an Tabellen enthält. Es wird also für jeden Schleifendurchlauf eine der Tabellen aus C bearbeitet. Für jeden Schleifendurchlauf soll ein W1 (3 spalten 1Zeile oder W1=0) in eine Tabelle W geschrieben werden. So dass ich für jeden schleifendurchlauf eine Zeile mit den entsprechenden werten in W habe. Wie kann ich das realisieren? bzw was habe ich hier falsch gemacht.
P.S. der Code funktioniert beim Einzeldurchlauf der Tabellen aus C, ist also richtig. Ich bekomme das nur nicht in die for-Schleife.
Code:
sw = 1% schwelle (lage)
sw1 = 1% schwelle (höhe)
sw2 = 2% offset über mittl. höhe
radius = 1.5% radius um mittelpunkt
W = zeros(50, 3);
[m1,n1]=size(P) if m1 <= 2% wenn C weniger als 2 zeilen hat nicht erfolgreich
W1=0;
else
Q = P(1:3,1:3)% erste 3 werte (maxima) in tabelle schreiben
Q1(:,1)=Q(:,1)% höhen abschneiden
Q1(:,2)=Q(:,2)
R = pdist(Q1,'euclid')% abstandsmatrix bestimmen aus lage
%index = find(R(1,1) < 1);
% 3 minima sollen lagetechnisch innerhalb einer schwelle liegen
if(R(1,1)<sw), % alle 3 abstände in der abstandsmatrix auf schwelle untersuchen
Q3(1,:) = Q(1,1:3)% wenn unterhalb der schwelle werte zwischen denen sich die abstände befinden in Q3 schreiben
Q3(2,:) = Q(2,1:3),
end if(R(1,2)<sw),
Q3(1,:) = Q(1,1:3)
Q3(3,:) = Q(3,1:3),
end if(R(1,3)<sw)
Q3(2,:) = Q(2,1:3)
Q3(3,:) = Q(3,1:3),
end ifexist('Q3')
Q2(:,1)=Q3(:,3)% Höhen aus Q3 in eigene tabelle (Q2) schreiben
R1 = pdist(Q2,'euclid')% abstandsmatrix aus höhen bestimmen
% 3 minima die lagetechnisch innerhalb einer schwelle liegen sollen auch höhentechnisch innerhalb einer schwelle liegen
if(R1(1,1)<sw1), % alle 3 abstände in der abstandsmatrix auf schwelle untersuchen
Q4(1,:) = Q3(1,1:3)% wenn unterhalb der schwelle werte zwischen denen sich die abstände befinden in Q4 schreiben
Q4(2,:) = Q3(2,1:3),
end if(R1(1,2)<sw1),
Q4(1,:) = Q3(1,1:3)
Q4(3,:) = Q3(3,1:3),
end if(R1(1,3)<sw1),
Q4(2,:) = Q3(2,1:3)
Q4(3,:) = Q3(3,1:3), % Q4 enthält punkte, die lagetechnisch und höhentechnisch innerhalb der beiden schwellen sw und sw1 liegen end ifexist('Q4')
B = sum(Q4) ./sum(Q4~=0) % mittel aus Q4 bestimmen. dabei zeilen in denen zwangsläufig 0 steht, ausser acht lassen
ein kleines Problem hab ich noch. Gewisse Werte, die ich bei einem Schleifendurchlauf verwende, werden beim nächsten Schleifendurchlauf weiterverwendet. Das vermute ich zumindest, da ich fehlerhafte Ergebnisse bekommen.
Wie kann ich realisieren, dass Variablen nach jeden Schleifendurchlauf wieder zurückgesetzt werden?
Gruß
statt zu "vermuten", was das Problem ist, kannst Du einfach den Debugger verwenden und das Programm Zeile für Zeile abarbeiten lassen. Setze einfach ein paar Breakpoints (rote Punkte links neben dem Text) und starte das Programm. Dann kannst Du ja genau anschauen, welche Variable welchen Wert hat und das Problem finden.
andi_1 hat Folgendes geschrieben:
Wie kann ich realisieren, dass Variablen nach jeden Schleifendurchlauf wieder zurückgesetzt werden?
Nun, indem Du die Variablen nach jedem Schleifendurchlauf zurücksetzt, oder?
wenn ich wüsste wie man Variablen nach einem Schleifendurchlauf wieder zurücksetzt, würde ich hier nicht danach fragen...
Kannst du mir bitte sagen, wie ich das realisieren kann?
Gruß
mir wird das Problem nicht klar.
Eine Variable kannst Du einfach am Anfang der Schleife auf den Wert setzen, den sie erhalten soll.
Es wäre hilfreich, wenn Du anhand des Programms zeigst, was Du genau meinst. Beschreibe dann das Ergebnis und Deine Erwartungen.
Gruß, Jan
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.