Hallo! Folgendes Problem: Ich habe ein 1xN Array. In jedem Feld sitz eine Datenstruktur folgender Form: currents(1).diode currents(2).switch . . . currents(n).choke Das n steht dabei für verschiedene Zeitpunkte. Ich habe also eine Struktur in der die Ströme von diode, switch, choke, usw gespeichtert sind. Diese Strunktur gibt es für jeden Zeipunkt n. Nun möchte ich MATLAB Funktionen wien mean(), max(), min() auf das Array Anwenden um die Mittelwerte, Maximum der Ströme in diode, switch usw zu erhalten. Leider funktioniert dies nicht. Kann mir jemand helfen? (Ich möchte es vermeiden, die Mittelung mit einer Schleife auszuprogrammieren, die Struktur hat noch viel mehr Felder. Die Anordung der Daten in dieser Form erscheint mir jetzt ungünstig, jedoch ist dies nicht mehr zu ändern) Bin für jeden Tipp dankbar! MFG Sepp
:
Verschoben durch User
du solltest eventuell mal noch schreiben in welcher Sprache du es lösen willst.
Probier mal: currents(:).diode Oder noch kürzer: currents.diode Da sollte wieder ein [1xN]-Array rauskommen, das du dann an mean() übergeben kannst... also: Mittelwert_Diodenstrom = mean(currents.diode) Falls dein Array doch eher [Nx1] musst du halt noch transponieren: Mittelwert_Diodenstrom = mean((currents.diode)') Gruß, Josef
>du solltest eventuell mal noch schreiben in welcher Sprache du es lösen >willst. Siehe Thread Überschrift. >currents.diode >Da sollte wieder ein [1xN]-Array rauskommen, das du dann an mean() >übergeben kannst... Genau das hab ich zuerst versucht, funktioniert aber nicht, denn nach currents.diode kommt kein 1xN Array sondern eine Liste heraus. Folgender Code funktioniert nicht:
1 | S(1).a=2 |
2 | S(2).a=4 |
3 | S(3).a=6 |
4 | |
5 | x=mean(S.a) |
Weist man x direkt S.a, also x=S.a zu, dann steht in x nur 2. Jemand eine bessere Idee? Grüße Sepp
>Da sollte wieder ein [1xN]-Array rauskommen, das du dann an mean() >übergeben kannst... Nein. >funktioniert aber nicht, denn nach >currents.diode kommt kein 1xN Array sondern eine Liste heraus. Richtig erkannt. Die logische Schlussfolgerung ist, das ganz mal in ein Array zu packen, bevor an mean übergeben wird. Wie bekannt erfolgt dies durch []. Also versuch mal:
1 | x=mean([S.a]) |
(sollte funktionieren, jedoch hab ich im Moment kein Matlab zur Hand) Transponieren muss du auch nicht, denn für mean() ist es egal Zeilen- oder Spaltenvektor... MFG Fralla
Fralla schrieb: > Also versuch mal:x=mean([S.a]) Vielen Dank, das funktioniert! Angenommen ich habe den Fall, dass die Struktur mehrfach verschalchtelt ist. Also zb.: currents.diode.rms currents.diode.peak currents.diode.avg Folgender Code ergibt eine Fehlermeldung:
1 | S(1).a.x = 2 |
2 | S(2).a.x = 4 |
3 | S(3).a.x = 6 |
4 | |
5 | avg = mean([S.a.x]) |
Weis jemand wie ich in diesem Fall mean() auf die .a.x Elemente anwenden kann? Grüße, Sepp
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.