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

gleicher befehl für verschiedene variabel

 

Vanillebacke
Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 04.02.2010, 15:22     Titel: gleicher befehl für verschiedene variabel
  Antworten mit Zitat      
moin,

hat jemand ne idee, wie ich für verschiedene variabel: S1, S2 bis S96 den gleichen befehl ausführen kann..... bei allen sollen die inhalte der 2.spalte verändert werden..... dabei sind nicht alle variabeln gleichzeitig vorhanden.....

kann mir jemand wieterhelfen....

dachte so an einer schelife mit if abfrage.... komm aber nicht weiter..

danke
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.02.2010, 22:51     Titel:
  Antworten mit Zitat      
Hallo,

etwas in der Art:

Code:
for I=1:96
eval(... etwas mit 'S' numstr(I)...)
end

Testen ob Variable existiert: exist.

Sorry, aber mehr kann ich mit der Fragestellung nicht anfangen...

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

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 05.02.2010, 13:50     Titel:
  Antworten mit Zitat      
weiss nicht wie ich das mit der for schleife wirklich einbaue, tu mich da schwer.....
also der code lautet bisher:
Code:

if exist ('S1')
S1(:,2)=NaN;
end

if exist ('S2')
S2(:,2)=NaN;
end
.
.
.
if exist ('S96')
S96(:,2)=NaN;
end
 


und genau so für folgenden Code:
Code:

[c, ia,ib] = intersect(Daten_ALL(:,1), S1(:,1));
Daten_ALL(ia,2) = S1(ib,2);

[c, ia,ib] = intersect(Daten_ALL(:,1), S2(:,1));
Daten_ALL(ia,3) = S2(ib,2);

[c, ia,ib] = intersect(Daten_ALL(:,1), S3(:,1));
Daten_ALL(ia,4) = S4(ib,2);
.
.
.
[c, ia,ib] = intersect(Daten_ALL(:,1), S96(:,1));
Daten_ALL(ia,97) = S96(ib,2);


 


kannst du mir da helfen.....

danke....
Private Nachricht senden Benutzer-Profile anzeigen
 
Vanillebacke
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 05.02.2010, 16:22     Titel:
  Antworten mit Zitat      
Ansatz:

Code:


for I=1:96
eval(['S',num2str(I)])
if exist ('S',num2str(I))
SI(:,2)=NaN
end
end
 


gibt mir aber noch die fehlermeldung

error using eval---> undefined function or variabel 'S1'


kann mir jemand helfen???

danke[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
Vanillebacke
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 05.02.2010, 17:27     Titel:
  Antworten mit Zitat      
hab die lösung für den ersten teil:

Code:

for I = 1:96
if exist ( ['S',num2str(I)])
eval(['S',num2str(I),'(:,2)',''=','NaN']);
end
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

dann sollte der zweite Teil ja auch nicht mehr schwer sein. Etwa so:

Code:
for I = 1:96
eval(['[c, ia,ib] = intersect(Daten_ALL(:,1), S', num2str(I), '(:,1));']);
eval(['Daten_ALL(ia,2) = S', num2str(I), '(ib,2);']);
end


Tipp: I auf einen Wert setzen und dann disp statt eval verwenden um zu sehen, wie der String zusammengesetzt aussieht.

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

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 09.02.2010, 11:15     Titel:
  Antworten mit Zitat      
moin,
nicht ganz....

Code:

for I = 1:96
eval(['[c, ia,ib] = intersect(Daten_ALL(:,1), S', num2str(I), '(:,1));']);
eval(['Daten_ALL(ia',num2str(I),'+1) = S', num2str(I), '(ib,2);']);
end


Code:


hier soll er immer ein weiterzählen....

aber bisher kommt noch die fehlermeldung undefined function or varible 'ia1'

kann mir da jemad weiterheölfen.... ist sicher nur ne kleinigkeit...

danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Vanillebacke
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 09.02.2010, 11:25     Titel:
  Antworten mit Zitat      
hab den fehler,
Very Happy
die '+1' ist kein string daher muss der befehl mit in den num2str befehl rein und es fehlte ein komma.... richtiger code:
Code:

for I = 1:96
if exist ( ['S',num2str(I)])
eval(['[c, ia,ib] = intersect(Daten_ALL(:,1), S', num2str(I), '(:,1));']);
eval(['Daten_ALL(ia,',num2str(I+1),') = S', num2str(I), '(ib,2);']);
end
 
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.