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

Inhalte aus Handle-Klasse in Array überführen

 

zevon
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.03.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2021, 10:41     Titel: Inhalte aus Handle-Klasse in Array überführen
  Antworten mit Zitat      
Hallo,

wie kann ich aus einer Handle-Klasse aus jedem Eintrag (3 gleichartige Strukturen) den gleichen (bzw äquivalenten) Inhalt herausnehmen?

Die Handle-Klasse heißt "information". Jede der darin vorkommenden Strukturen beinhaltet eine property mit den Namen "number".

Gebe ich

Code:
information(:).number


in die Kommandozeile ein, so erhalte ich genau was ich will. Alle Inhalte aller drei "number":

ans =

0


ans =

0

ans =

2

Aber ich schaffe es nicht, diese in einem Befehl in ein Array zu überführen (das ich dann später auf das Vorkommen von Nicht-Nullen überprüfen möchte).

Versucht habe ich:

Code:
a(:) = information(:).number
---
a(1,:) = information(:).number
---
a = []
a(:) = information(:).number


uvm.

Es wird stets nur die erste Nummer in das Array übertragen (hier 0). Wieso ist das so?
Private Nachricht senden Benutzer-Profile anzeigen


ueg
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 15.08.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2021, 11:08     Titel:
  Antworten mit Zitat      
Hallo,

kannst du den handle hier ein mal reinstellen auf den du zugreifen willst?

Viele Grüße

Edit: funktioniert es auch nicht einfach über

Code:
a = information.number;
bzw.
a = information(:).number;
 


So haut der Zugriff zumindest bei structs hin...
Private Nachricht senden Benutzer-Profile anzeigen
 
zevon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.03.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2021, 11:18     Titel:
  Antworten mit Zitat      
Der ist wie folgt aufgebaut:

Code:
classdef Global_Data < handle

    properties

        number

    end

    methods

        function obj = Global_Data( )

            obj.number = 0;

        end
    end
end



Und später dann:
Code:

for ii=1:1:3
    information(ii) = Global_Data();
end


Im weiteren Verlauf werden einzelne information().number Einträge dann eventuell geändert.

Ich hoffe das reicht als Beschreibung (:
Private Nachricht senden Benutzer-Profile anzeigen
 
zevon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.03.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2021, 11:24     Titel:
  Antworten mit Zitat      
Zitat:
Edit: funktioniert es auch nicht einfach über

Code:
a = information.number;
bzw.
a = information(:).number;
 


So haut der Zugriff zumindest bei structs hin...


Leider nein. Dann bekomme ich ebenfalls nur ein array mit einem einzigen Eintrag. Das ist es ja, was mich so verwundert. Denn wenn ich nur:

Code:
information(:).number


in das Command Window eingebe, erhalte ich eine Auflistung sämtlicher Einträge.

Die Zahlenwerte in "information().number" sind übrigens vom Typ Double.
Private Nachricht senden Benutzer-Profile anzeigen
 
ueg
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 15.08.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2021, 11:46     Titel:
  Antworten mit Zitat      
Also auf die Schnelle neben dem Mittagessen würde ich das wenn es dir nicht auf die Geschwindigkeit ankommt das Ganze mit einer for-Schleife laufen lassen. Wink

Ich kann mir das sonst aber nachher auch noch mal in Ruhe anschauen..

also so was in der Richtung als Notlösung:

Code:
for n = 1:3
a(n) = information(n).number;
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.428
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.07.2021, 11:56     Titel:
  Antworten mit Zitat      
Hallo,

die Einträge müssen zusammengefasst werden, z.B.:
Code:
[information(:).number]
 
oder
Code:
vertcat(information(:).number)
 
oder
Code:
{information(:).number}


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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
zevon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.03.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2021, 12:07     Titel:
  Antworten mit Zitat      
Ja, so habe ich es jetzt auch gemacht Smile Ich denke, das passt schon so. Da der Befehl ja nur zu Beginn einmal aufgerufen wird. Ich dachte, es wäre womöglich ganz trivial^^

Ich lasse das Thema mal noch bis heute abend offen. Danke schonmal.
Private Nachricht senden Benutzer-Profile anzeigen
 
zevon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 12.03.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2021, 12:32     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

die Einträge müssen zusammengefasst werden, z.B.:
Code:
[information(:).number]
 
oder
Code:
vertcat(information(:).number)
 
oder
Code:
{information(:).number}


Grüße,
Harald


Super, funktioniert! Dankesehr.

Und noch was gelernt: Die Doppelpunkt Variante mit a( : )

Code:
a = zeros(size(information(:)))
a(:) = information(:).number
 

funktioniert nur, wenn die Größe der Vektoren identisch ist. Surprised
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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 - 2024 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.