Funktionen wie mean() auf Array aus Strukturen Anwenden (MATLAB)

Gast #3061750
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
Gast
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
Gast
>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
Gast
>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
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.