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

Bearbeitung von versch. Zellen in Array bei for und if

 

Falke2
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 28.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2010, 10:48     Titel: Bearbeitung von versch. Zellen in Array bei for und if
  Antworten mit Zitat      
Hallo Matlab-Forum,

wünsche euch einen guten Tag.
Hiermit möchte ich eine Frage zu der eval-Funktion stellen.
Ich möchte einen Array an unterschiedlichen stellen innerhalb for und if bearbeiten.
Der Anfang in meiner for Schleife funktionierte mit eval(['vh' int2str(n)] usw.:
Wie kann ich aber unterschiedliche Zellen z.B. vh(2,3) ansprechen?
In meinem Beispiel möchte ich 5 Vektoren in der zweiten Spalte nach einem Wert abfragen und bei erfolgreicher Auswahl einer der Vektoren, in eine andere Spalte einen Wert hinzufügen.
Meine Ausarbeitung ist derzeit:
Code:

clear
x=5;
y=10;
vh1=[   64.46        0 0;   62.72 0 0;   -14.66   0 0];
vh2=[   -45.98   0 0;   0.65   0 0;   -6.15    0 0];
vh3=[   -53.85   0 0;   1.48   0 0;   10.54   0 0];
vh4=[   -53.59   5 0;   2.25   0 0;   29.63   0 0];
vh5=[   -52.13   0 0;   0.77   0 0;   -6.27           0 0];

for n=1:5;

if eval(['vh' int2str(n)])(1,2)==x;          %Abfrage of der Vektor VH(n) in der Zelle (1,2) den Wert x besitzt?
                   
eval(['vh' int2str(n)])(1,3)=eval(['vh' int2str(n)])(1,3)+y; %wenn ja dann soll in der Zelle (1,3) der Wert y      
                                                                    %hinzugefügt werden
else                                                              %gehe zrück nach los

end
end
vh4(:,:)              %Ergebnis?
 

Der Fehler liegt daran, dass ich in der eval-Funktion den Index nicht richtig platziere aber ich habe schon alle Möglichkeiten ausprobiert:(

Das Ergebnis sollte sein
ans =

-53.5900 5.0000 10.0000
2.2500 0 0
29.6300 0 0


Vielen Dank für eure Hilfe!!!
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: 18.10.2010, 18:45     Titel: Re: Bearbeitung von versch. Zellen in Array bei for und if
  Antworten mit Zitat      
Hallo Falke2,

Zitat:
Der Fehler liegt daran, dass ich in der eval-Funktion den Index nicht richtig platziere aber ich habe schon alle Möglichkeiten ausprobiert:(

Nein, der Fehler liegt darin, dass Du einen Index mit in den Namen der Variablen integrierst. Das ist erstens sehr anfällig für Fehler (siehe z.B. Deinen), und zweitens macht es Matlab sehr langsam un ineffizient.

Wenn Du einen Index als Index verwendest, z.B. indem Du mehrdimensionale Arrays oder Cells verwendest, wird es deutlich einfacher, überscihtlicher, sicherer und schneller.

Siehe dazu auch dutzende andere Threads, in denen z.B. ich etwas über EVAL geschrieben habe.

Viel Erfolg, 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.