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

Aufteilen von Strings

 

joerg030284
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2008, 12:20     Titel: Aufteilen von Strings
  Antworten mit Zitat      
Hallo zusammen,

ich bin neu, aber ich habe zuerst die Suche benutzt, um was zu finden, leider ohne Erfolg. Hier also mein Problem:

Ich gebe in ein GUI eine Liste von Variablen (zunächst per Hand) in ein Edittext-Feld ein, die sich im Workspace befinden.
Diese lese ich im m-File dann aus:

Code:

varname=get(handles.edit_varinput,'String');
 


Wenn ich einen Variablenname eingebe und diesen dann per

Code:
var=evalin('base',[varname]);


funktioniert das auch wunderbar.

Problematisch wirds, wenn ich mehrere Variablennamen eingeben will. Dann zerlegt er die logischerweise nicht. Ich würd diese im Edit-Feld gern in diesem Format eingeben:

Code:
Var1;Var2;Var3;...


Er soll mir diese dann im Code zerlegen und ich würde sie dann letztendlich gern plotten. Für den Plot-Befehl sollen sie also in die Form

Code:
'Var1';'Var2';'Var3';...


kommen.

Kennt jemand eine passende String-Funktion, mit der ich das hinbekomme?

Vielen Dank schonmal,
Jörg[/code]
Private Nachricht senden Benutzer-Profile anzeigen


nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 09.08.2008, 13:01     Titel:
  Antworten mit Zitat      
Hi,

versuch es mit Regulären Ausdrücken:
Code:
clear all;
clc;

str='Var1;Var2;Var3;Var4';
c_str=regexp(str,';','split');
for i=1:length(c_str)
    var(i)=evalin('base',c_str{i});
end

str wäre dann der String aus dem Textfeld.

Siehe auch hier
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
joerg030284
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2008, 16:40     Titel:
  Antworten mit Zitat      
Hallo!

Genau so etwas hatte ich vom Prinzip her gesucht, aber das hier kommt raus:

Code:

str='Var1;Var2;Var3;Var4';
c_str=regexp(str,';','split');

??? Error using ==> regexp
Invalid option for regexp: split.
 


Mach ich irgendwas falsch??

Danke,
Jörg
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 09.08.2008, 17:16     Titel:
  Antworten mit Zitat      
Dann hast Du vielleicht eine ältere Matlab-Version?

Klappt es so:
Code:
c_str=textscan(str,'%s','delimiter',';');
for i=1:length(c_str{1})
    var(i)=evalin('base',c_str{1}{i});
end
?
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
joerg030284
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.08.2008, 18:15     Titel:
  Antworten mit Zitat      
Hallo!
Ich hab Matlab 7.1 R14, sollte also nicht zuuu alt sein...

Zu deinem anderen Lösungsvorschlag:

Wenn ichs copy-paste, kommt folgende Fehlermeldung:

Code:

???  In an assignment  A(I) = B, the number of elements in B and
 I must be the same.
 


Ich habs dann so probiert:
Code:

for i=1:length(c_str{1})
    var{1}{i}=c_str{1}{i};
end
 


geht auch, allerdings hab ich dann in var{1}{1} z.B. den Namen der ersten Variable drin, die ich plotten will.
Wenn da jetzt z.B. 'y1' drin steht, wie krieg ich dann den Inhalt der Variable y1 raus?

Danke und sorry, wenn ich Grundlagen-Fragen stelle Smile
Jörg
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 09.08.2008, 23:42     Titel:
  Antworten mit Zitat      
Hi,

dann sind die Variablen wohl Vektoren oder sowas. Hab ich zu Anfang überlesen
Dann klappt es mit cell arrays:
Code:
c_str=textscan(str,'%s','delimiter',';');
for i=1:length(c_str{1})
    v{i}=evalin('base',c_str{1}{i})
    figure;
    plot(v{i})
end


Du kannst auch gern ein lauffähiges Beispiel posten.

Edit: Die split Option für regexp gibt es erst seit R2007b:
http://www.mathworks.com/access/hel...../brb410y-1.html#brb7989-1
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
joerg030284
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.08.2008, 19:36     Titel:
  Antworten mit Zitat      
Hallo!

Ja, das Problem hatte ich ja schon gelöst!

Problem jetzt: in v{i} stehen ja jetzt nicht die Daten drin, die ich plotten will, sondern die Namen der Variablen.

Wie komm ich jetzt an die Daten ran?

Vielen Dank, nur noch ein Schritt Wink

Grüße
Jörg[/i]
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 10.08.2008, 20:37     Titel:
  Antworten mit Zitat      
Code:
vergessen?
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
joerg030284
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.08.2008, 21:21     Titel:
  Antworten mit Zitat      
Hallo!

Stimmt, evalin vergessen, allerdings hatte ichs erst an der falschen Stelle eingebaut! So funktionierts jetzt:

Code:
str=evalin('base','a');
c_str=textscan(str,'%s','delimiter',';');
for i=1:length(c_str{1})
    v{i}=c_str{1}{i}
    hold on;
    plot(x,evalin('base',[v{i}]))
end


Vielen Dank dir!
Jörg
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.