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

Arbeiten mit Strukturvariablen

 

smaica
Forum-Century

Forum-Century


Beiträge: 105
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2012, 13:07     Titel: Arbeiten mit Strukturvariablen
  Antworten mit Zitat      
Hallo,

ich habe eine Strukturvariable mit mehreren Einträgen, die alle Vektoren darstellen mit der gleichen Anzahl von einträgen. All diese Vektoren will ich jetzt im gleichen schema in eine Matrix abspeichern und hatte gehofft, dass ich bei einer Strukturvariable evtl den Befehl nur ein mal eingeben muss udn das mit allen Vektoren gleichermaßen gemacht wird. Nun weiß ich nicht, ob das geht und wenn ja wie.
Ich habe folgendes geschrieben (geht nicht):

Code:
for i=1:length(datas.Gesamt.syncZeit)
   
    for j=1:16
       
        if (start+i+j-2)>length(datas.Gesamt.syncZeit)
                       
           datas.Gesamt(i,j)=NaN;
                     
        else
           
           datas.Gesamt(i,j)=datas.Gesamt(start+i+j-2);
       
        end
   
    end
   
end


die Strukturvariablen sind wie folgt aufgebaut:

datas.Gesamt.*

also z.B.
datas.Gesamt.Zeit
datas.Gesamt.Urlaub
datas.Gesamt.Geld

usw.


Hat da jemand eine Idee?

Grüße
smaica
Private Nachricht senden Benutzer-Profile anzeigen


dmjr
Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2012, 13:49     Titel:
  Antworten mit Zitat      
Mir ist noch nicht ganz klar was du vor hast. Welche Fehlermeldung bekommst du denn?
Private Nachricht senden Benutzer-Profile anzeigen
 
smaica
Themenstarter

Forum-Century

Forum-Century


Beiträge: 105
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2012, 14:01     Titel:
  Antworten mit Zitat      
Hallo dmjr,

ich möchte in meine Schleife nicht für alle einträge der Strukturvariablen den Befehl schreiben, also:

Code:



for i=1:length(datas.Gesamt.syncZeit)
   
    for j=1:16
       
        if (start+i+j-2)>length(datas.Gesamt.syncZeit)
                       
       datas.Gesamt.Zeit(i,j)=NaN;
       datas.Gesamt.Urlaub(i,j)=NaN;
       datas.Gesamt.Geld (i,j)=NaN;

usw.
                     
        else
           
           datas.Gesamt.Zeit(i,j)=datas.Gesamt.Zeit(start+i+j-2);
datas.Gesamt.Urlaub(i,j)=datas.Gesamt.Urlaub(start+i+j-2);
datas.Gesamt.Geld(i,j)=datas.Gesamt.Geld(start+i+j-2);

usw
       
        end
   
    end
   
end

 


weil ich sehr viele Einträge in dieser Strukturvariablen habe, sondern möglich nur einmal sagen, dass für alle Einträge in der Strukturvariable "datas.Gesamt" diese Operation ausgeführt wird.


Die Fehlermeldung lautet:

Index exceeds matrix dimensions.

Error in matrixstyle (line 47)

datas.Gesamt(i,j)=datas.Gesamt(start+i+j-2);


Greez
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 10.12.2012, 18:23     Titel:
  Antworten mit Zitat      
Hallo smaica,

"datas.Gesamt" ist ein Skalar überall in dem Code, den Du gepostet hast.
Deshalb ist es nicht verblüffend, dass "datas.Gesamt(start+i+j-2)" scheitert, oder?

Mir ist immer noch nicht klar, was Du genau erreichen möchtest. Eventuell helfen Dir "dynamic fieldnames":
Code:
Field = fieldnames(datas.Gesamt);
for k = 1:numel(Field)
  datas.Gesamt.(Field{k})(start+i+j-2) = NaN;
end

Nebenbei sollte es viel effizienter sein, die NaNs nicht elementweise anzuhängen, sondern als Block.

Gruß, Jan
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 - 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.