Verfasst am: 23.04.2020, 10:52
Titel: if-Schleife Werte vergleichen mit unterschiedlicher länge
Hallo ihr Lieben,
ich hab eine Frage.
Ich habe F =12x2
und Gait = 146x11
davon gibt es jeweils 97 Dateien aber das ist ja erstmal nebensächlich. Ich will jetzt von Gait die ersten beiden Spalten vergleichen mit den ersten beiden von F.
Um das verständlicher zu machen. In F steht ein Zeitraum bspw. 1999 3315 Start und Stop von einer geraden Strecke die 12 mal gelaufen wurde.
und in G stehen Start und Stop für jeden Doppelschritt inklusive Wenden.
Sieht dann so aus:
2027 2126
2126 2227
2227 2327
2327 2427
... bis 146 bsp.
Jetzt möchte ich das Wenden nicht haben und prüfen.
bisher habe ich nur das:
Code:
for nf= 1:length(Gait(:,2))-1 if Gait(nf,1)>= F(:,1) && Gait(nf,2)<= F(:,2) end
F(:,1) doppelpunkt ist sicher Falsch aber ich weiß nicht wie ich es prüfen kann. ich möchte das von Gait solange in Zeile 1 von F geprüft wird bis keine passenden mehr vorhanden sind. Danach die nächsten Zeilen im gleichen Schema. Und die die nicht passen nicht nehmen.
Könnt ihr mir helfen, ich weiß gerade nicht weiter.
ich verstehe leider nicht, was gemacht werden soll. Vielleicht ein konkreteres Beispiel, vor allem inkl. erwartetem Ergebnis?
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 ;)
ohja ich merke ich war da schon geistig zu lange am Computer.
ich bin jetzt erstmal pro Datei vorgegangen lässt sich vielleicht auch leichter erklären.
Also ich hab eine Datei 001-G-Frames und eine Datei 001-G. In den Frames stehen Start und Ende einer bestimmten Strecke, die unterschiedlich oft gegangen wurde. In der G Datei sind die Anzahl der benötigten Schritte zu finden. In den ersten beiden Spalten stehen da auch Start und Ende jedes einzelnen Schrittes so lässt es sich zuordnen welcher Schritt in welcher Strecke gegangen ist.
for iframes=1:length(f(:,1))
ind=[];
for istrides=1:length(g(:,1)) if g(istrides,1)>= f(iframes,1) && g(istrides,2)<= f(iframes,2)
ind=[ind,istrides];
end end
Gaitneu=g(ind,:);
Die Funktion hab ich für ein anderes programm geschrieben, dort will ich die Datei(später auch mehrere) in abhängigkeit von den Frames (also Strecke für Strecke separat detrenden) aufrufen möchte.
Bin aber jetzt wirklich am limit meiner Fähigkeiten. Ich denke ich sollte das zuordnen der Strecken der DS ebenfalls in eine Funktion bauen die ich dann aufrufe in meinem bisherigen dafür gebauten m.file.
Ich hoffe es ist etwas deutlicher geworden. Finde es schwer das zu erklären.
mir ist nicht klar, wo nun bei diesem Code oder seiner Ausführung das Problem liegt.
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 ;)
also das Problem ist noch das das gerade nur für 1 Frames -Datei und 1 dazugehörige Gait Datei funktioniert. Wenn ich das für eine Schleife mit mehreren Datein einbaue:
for iparam=3:length(g(1,:))
gneu = rmmissing(g(:,[1,2,iparam]));
for iframes=1:length(f(:,1))
ind=[];
for istrides=1:length(gneu(:,1)) if gneu(istrides,1)>= f(iframes,1) && gneu(istrides,2)<= f(iframes,2)
ind=[ind,istrides];
end end
lambda=5;
Gaitneu=gneu(ind,:);
%hier detrenden
z_stat(iparam,:)=Detrend(Gaitneu,lambda);
%hier degetrendete daten abspeichern
gesammelt(i,iparam)=std(z_stat);
end end end
ich will auch dass über alle Spalten gedetrendet wird. Ohne die Frameszeiten (also die benötigte Zeit für eine Strecke) funktioniert das. Aber um es genauer darzustellen benötige die Detrending Daten, Strecke für Stecke.
Liebe Grüße,
Ines
falls ich das beim letzten Mal noch nicht empfohlen habe:
aus der Vorgehensweise für das Verarbeiten einer Datei eine Funktion machen und diese dann in einer for-Schleife aufrufen.
Bei der Fehlermeldung kann ich dir nur raten, das zu tun, was ich tun würde: debuggen.
Übrigens: die Fehlermeldung stimmt nicht mit dem Code überein. Einmal ist ein Aufruf von std enthalten, einmal nicht. Das solltest du als erstes überprüfen.
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 ;)
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.