Forum: PC Hard- und Software Funktionen wie mean() auf Array aus Strukturen Anwenden (MATLAB)


von Sepp (Gast)


Lesenswert?

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
von Peter II (Gast)


Lesenswert?

du solltest eventuell mal noch schreiben in welcher Sprache du es lösen 
willst.

von Josef H. (Gast)


Lesenswert?

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

von Sepp (Gast)


Lesenswert?

>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

von Fralla (Gast)


Lesenswert?

>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

von Sepp (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.