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

zähler innerhalb matrix erhöhen

 

kekxdose
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 13.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2008, 17:43     Titel: zähler innerhalb matrix erhöhen
  Antworten mit Zitat      
Hi Folks,

gibt es eine Möglichkeit den Wert innerhalb der Datanmatrix eines struct zu erhöhen.
Anders gesagt:

ich möchte ein bestimmtes Feld zugreifen und den Wert von 1 auf z.B.2 erhöhen.

Konkret:
Ich bin innerhalb einer for-Schleife, die einige if-Abfragen enthält. Trifft die Abfrage zu, gehts also in diese if-Schleife rein und soll mir da einen counter um eins erhöhen. Der counter soll aber einfach eine Zahl an einer bestimmten Stelle der Matrix sein.

etwa so:
Code:

if blabla
....struct.data(y,x) = struct.data(y,x)+1;
end
 

vielen Dank, für jeden Hinweis
Private Nachricht senden Benutzer-Profile anzeigen


Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2008, 17:57     Titel:
  Antworten mit Zitat      
Das sollte sicherlich gehen.
z.B.:
Code:
s=struct('Matrix',eye(5));
for i = 1:10
    if mod(i,2)==0
        s.Matrix(2,1)=s.Matrix(2,1)+1;
        s.Matrix
    end
   
end
 
kekxdose
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 13.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2008, 18:21     Titel:
  Antworten mit Zitat      
danke erstmal für die schnelle Antwort.

Dein Beispiel fuktioniert, so wie es ist, wenn ich es jedoch auf diese Weise versuche, bekomme ich einen Fehler:
Code:

??? Index exceeds matrix dimensions.
 


Ich habe auch versucht, ähnlich wie bei Dir, mit dem eye-Befehl zuerst die Matrix erstellen zu lassen, bevor sie "gefüllt" wird, mit dem gleichen Fehler.

Code:

w=length(struct.data)+1;
for o=1:length(struct.data)
       if  struct.data(o,1)=150
           structZwei.data(o,9) = struct.data(o,1);
           structZwei.data(w,9) = structZwei.data(w,9)+1;
       end
end
 


So sieht der Code aus.
Wenn die if-Abfrage erfüllt ist, soll also ein neues struct erstellt werden (structZwei), an dessen (o,9)te Stelle der Aktuelle Wert reingeschrieben wird --> funktioniert auch!
In der Zeile darunter liegt dann der Fehler. w ist eine Zeile länger. Es soll also in der Zeile darunter an der gleichen (9.) Stelle eine eins hingeschrieben werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2008, 19:52     Titel:
  Antworten mit Zitat      
Hallo,

das liegt daran dass auf
Code:
structZwei.data(w,9)
zugreifst (rechts vom = ) obwohl es noch gar nicht existiert.

Ich würde dir auch naheliegen, deine Variable nicht "struct" zu nennen (struct ist ein Matlab-Befehl).

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
kekxdose
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 13.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2008, 20:17     Titel:
  Antworten mit Zitat      
danke auch für diese Antwort.
Ich habe das struct in meinem m-File natürlich nicht struct genannt. Da stehen ziemlich lange namen dafür, die ich der verständlichkeit halber in struct umbenannt habe!!!

Zu Deiner Lösung:
ja, das hab ich dann auch bemerkt, dass ich erstmal ein struct anlegen muss, dass der Grösse entspricht, dass mit Nullen gefüllt ist, die dann überschrieben werden.

Also nochmals danke an alle beteiligten.

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