WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

struct array, cell array

 

theresa
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2017, 12:05     Titel: struct array, cell array
  Antworten mit Zitat      
hallo zusammen,

ich würde gerne einige matrizen in einem struct- array speichern.

Momentan habe ich eine Funktion die mir meine gewünschten Matrizen zurück gibt. Diese würde ich gerne in einem struct abspeichern.

kann mir jemand helfen, aus der Dokumentation werde ich nicht schlau Sad

gruß theresa
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.07.2017, 08:37     Titel:
  Antworten mit Zitat      
Hallo,

Anlegen einer Struktur:
variablenName.feldname = Inhalt
also z.B.
Code:
s.matA = rand(3,3)


Wenn das nicht weiterhilft, bitte die Frage vielleicht nochmal konkretisieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2017, 09:04     Titel:
  Antworten mit Zitat      
hallo harald,

vielen Dank für die Antwort.
Folgende Methode gibt mir mehrere Matrizen aus und jeweils einen vektor zu jeder Matrix (die Anzahl kann vorher nicht genau bestimmt werden.)

Code:
[cellarray] =calculateMatrix(data);


Diese Matrizen (und den Vektor zu jeder Matrix) würde ich gern in meinem struct speichen statt sie mir gleich auszugeben.
Bei der Umsetzung scheiter ich allerdings noch.
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2017, 09:07     Titel:
  Antworten mit Zitat      
Das structure array soll dazu dienen die Matrizen und Vektoren oder evtl später noch mehr ab zu speichern, sodass ich es später nach bestimmten kriterien untersuchen kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.07.2017, 09:08     Titel:
  Antworten mit Zitat      
Hallo,

und in welcher Form soll das ganze ausgegeben werden?
Verstehe ich es richtig, dass das Cell Array quasi Matrix-Vektor - Paare enthält?

Dann könnte man über diese iterieren und das der Struktur zuweisen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2017, 09:28     Titel:
  Antworten mit Zitat      
Das cellarray ist eigentlich nur die Matrix. Zusätzlich lass ich mir noch von jeder Matrix die Eigenwerte berechnen. Beides würde ich gerne in einem struct abspeichern.

Das ganze liegt also nicht paarweise in einem Cellarray vor.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.07.2017, 09:34     Titel:
  Antworten mit Zitat      
Hallo,

ist etwas schwierig zu erahnen, was du genau machen möchtest.
Schau dir mal cell2struct an. Damit kannst du das Cell Array direkt umwandeln.
Code:
c = {rand(2,2), rand(3,3)};
s = cell2struct(c, 'matA')


Dann kannst du z.B. in einer Schleife noch die Vektoren dazusetzen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2017, 09:43     Titel:
  Antworten mit Zitat      
Mein Kerngedanke war eigentlich der, dass ich die Matrizen und die dazugehörigen Vektoren irgendwo abspeichern kann. Wahlweise könnte man später auch noch die Eigenvektoren abspeichern...

So könnte ich z.B. die Eigenwerte untersuchen und mir dann nur die Matrizen und Vektoren ausgeben lassen bei denen die Eigenwerte alle >0 sind.
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2017, 09:45     Titel:
  Antworten mit Zitat      
Bin mir grade nicht sicher ob sich das so umsetzen lässt Crying or Very sad
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2017, 11:59     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:

Code:
c = {rand(2,2), rand(3,3)};
s = cell2struct(c, 'matA')


Dann kannst du z.B. in einer Schleife noch die Vektoren dazusetzen.


aber wie kann man die größe/länge des structs umgehen wenn ich nicht weiß wie viele Matrizen ich abspeichern möchte?

gruß theresa
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.07.2017, 12:18     Titel:
  Antworten mit Zitat      
Hallo,

hast du denn den Ansatz mal auf cellarray versucht?
Der Code würde vollkommen unabhängig von der Länge von c funktionieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2017, 14:18     Titel:
  Antworten mit Zitat      
hallo zusammen,

hab jetzt ein wenig rumprobiert
Code:
%Methodenaufruf, Berechnung Matrizen und Eigenwerte
[W,sortEV] = calculate(Z);

 %Anlegen eines structure array
c = {W,sortEV};
s = cell2struct(c, 'matA')


Matlab speichert aber nur die zuletzt berechnete Matrix und die dazugehörigen Eigenwerte.
Was muss man tun damit alle Matrizen im struct abgespeichert werden? Was hab ich übersehen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.07.2017, 14:54     Titel:
  Antworten mit Zitat      
Hallo,

wo werden denn weitere Matrizen erzeugt? Rufst du den Code in einer for-Schleife auf?
Was genau gibt calculate zurück (Datentyp, Dimensionen)?

Bitte stelle alle notwendigen Infos zur Verfügung, ansonsten ist es mühsam bis nicht mögich, dir zu helfen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
theresa
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 23.07.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2017, 15:05     Titel:
  Antworten mit Zitat      
die methode
Code:
calculate(Z)
gibt mir Matrizen W zurück und ihre dazugehörigen Eigenwerte sortEV. In diesem Fall sind es jetzt 10 stück. Statt mir diese einfach im command-window auszugeben wie es momentan der fall ist, würde ich die Matrizen gerne Speichern.

Nach dem Speichern möchte ich mir nur bestimmte Matrizen ausgeben lassen, deren Eigenwerte bestimmte voraussetzungen erfüllen.

Leider scheitert das hier schon am Speichern. Ich bin mir auch nicht ganz sicher ob ein struct hier eine gute Idee ist Confused

gomatlab.PNG
 Beschreibung:

Download
 Dateiname:  gomatlab.PNG
 Dateigröße:  12.6 KB
 Heruntergeladen:  408 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.07.2017, 15:26     Titel:
  Antworten mit Zitat      
Hallo,

du kannst außerhalb der Funktion nicht Informationen verwenden, die diese nicht zurückgibt. Wenn, dann musst du also innerhalb der Funktion ein Cell Array, eine Struktur oder was auch immer erstellen, das du dann nach dem Funktionsaufruf weiterverarbeiten kannst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.