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

Rechenschritt auf alle struct-Elemente anwenden

 

Sporisha
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 05.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.02.2015, 14:10     Titel:
  Antworten mit Zitat      
Also ich hab mir die menu-Funktion mal genauer angeschaut, konnte aber leider keine Möglichkeit finden, dass die Auswahlfelder nebeneinander stehen. Aber das entzieht sich wohl einfach meinem Können Laughing
Und da es auch nicht wirklich wichtig ist, lass ich es jetzt einfach normal Very Happy

Hätte allerdings noch eine (wahrscheinlich) letzte Frage, die mir bei meinem Projekt helfen würde.

Und zwar habe ich ähnlich wie oben ein struct, der Inhalt ist hier aber nur ein Skalarwert. (Meine ganzen Berechnungen laufen mit structs, deshalb würde ich das gern auch hier bebehalten)

Code:
Test.A = 1;
Test.B = 2;
Test.C = 4;
Test.D = 3;
Test.E = 5;


Nun möchte ich den Inhalt des struct mit bar ausgeben. Leider funktioniert es nicht mit bar(Test), deshalb hier mein ziemlich ineffektiver Ansatz:

Code:
Testneu(1)=Test.A
Testneu(2)=Test.B
Testneu(3)=Test.C
Testneu(4)=Test.D
Testneu(5)=Test.E

bar(Testneu)



Nun die Frage, ob es eine schnellere Möglichkeit gibt, die struct-Inhalte für bar() "vorzubereiten", oder ob ich mit dem richtigen Code auch direkt bar(Test) machen kann?

Hoffe das war einigermaßen verständlich Very Happy
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

mit
Code:
Testneu = structfun(@(x) x, Test)

kannst du Testneu leichter generieren.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 05.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.03.2015, 13:28     Titel:
  Antworten mit Zitat      
Hallo,

hab wieder ein ähnliches Problem Laughing
Und zwar möchte ich nun einen Rechenschritt auf alle struct-Elemente mehrerer structs anwenden.

Mithilfe der vorigen Hilfestellungen sieht mein Versuch so aus:
Code:
Test1.A = [10;20;30]
Test1.B = [20;30;40]
Test1.C = [30;40;50]

Test2.A = [10;20;30]
Test2.B = [20;30;40]
Test2.C = [30;40;50]

Test3.A = [10;20;30]
Test3.B = [20;30;40]
Test3.C = [30;40;50]


n1 = [cellstr('Test1'),cellstr('Test2'),cellstr('Test3')];

for i1 =1:numel(n1)
        n2 =fieldnames(n1{i1})
        for i2 =1:numel(n2)
                 (n1{i1}).(n2{i2}) = ((n1{i1}).(n2{i2}))./10
        end
end



So scheint das aber leider nicht zu funktionieren...
Es erscheint die Fehlermeldung:
Undefined function 'fieldnames' for input arguments of type 'char'.

Ich versteh den Fehler aber nicht, da n1 doch ein cell array of strings ist...
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

eben. Ein Cell Array von char und keine Struktur, wie es der Fall sein müsste.

Das Durchnumerieren von Variablen ist generell keine gute Idee. Stattdessen sollte man Arrays, in diesem Fall Strukturarrays verwenden. Darauf kann man dann arrayfun anwenden.

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

Gehe zu Seite Zurück  1, 2

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.