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

Teil aus String auslesen

 

scapa
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2011, 16:22     Titel: Teil aus String auslesen
  Antworten mit Zitat      
Hallo zusammen

Habe folgende Problemstellung:

Ich habe einen langen String und der ist nach dem folgenden Muster aufgebaut:
Code:

str=(F10*x^3)/750 - (8*F7)/45 - (8*F10*x)/15)
 

Es sind immer einzelne Terme, getrennt durch ein + oder - zeichen. Der "echte" String ist noch sehr viel länger.

Nun möchte ich z.B. genau den Term mit der Unbekannten F7 herausnehmen.
Also
Code:

teilstr= (- (8*F7)/45)
 


Wie schaffe ich das?
Mit strfind(str,'F7') kann ich die Position auslesen, wo F7 vorkommt. Nun müsste ich eine Routine haben, welche mir ausgehend von dieser Position den folgenden Bereich des strings wiedergibt: nach links bis irgendwo ein + oder - erscheint. Nach rechts bis irgendwo ein Space erscheint.


Ist das möglich?
Ich benötige eine solche Routine unbedingt für meine Masterarbeit und wäre für eure Hile seeeehr dankbar.

Grüsse
Scapa
Private Nachricht senden Benutzer-Profile anzeigen


scapa
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2011, 17:06     Titel:
  Antworten mit Zitat      
Vielleicht würde es auch mit sscanf oder textscan funktionieren. Leider komme ich als Anfänger mit dem Syntax noch nicht klar.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 23.05.2011, 00:17     Titel:
  Antworten mit Zitat      
Hallo

versuch es mal mit REGEXP
so was in der Art:
Code:

str='(F10*x^3)/750 - (8*F7)/45 - (8*F10*x)/15)'
regexp(str, '[+-].+F7.+\d+','match')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
scapa
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2011, 21:11     Titel:
  Antworten mit Zitat      
Besten Dank für deine Antwort.

Ich habe es zur Not wie folgt gelöst:
Code:

str=strrep(str,'+ ','+');     %Leerstellen nach Vorzeichen entfernen
str=strrep(str,'- ','-');       %Leerstellen nach Vorzeichen entfernen
Pcell=textscan(str, '%s', 'delimiter',' ');        %Terme in Pcell schreiben
for u=1:t;
    index=find(cellfun('length',strfind(Pcell{1},['F',num2str(u)])));    %Fi suchen
    nindex=size(index);     %Zählen wie oft Fi vorkommt
    T=cell(1);                      %Nullwert setzen, falls Fi gar nicht vorkommt
    T{1}='0';                      %Nullwert setzen, falls Fi gar nicht vorkommt
    for s=1:nindex(1);        %Schleife, um Terme zu sortieren
        substr1=Pcell{1}(index(s,1));
        substr2=strrep(substr1,['F',num2str(u),'v'],'1');
        T=strcat(T,'+',substr2);
    end;
    Pvec(u)=T;
    clear T;
end;

 

Wie mir scheint hat meine Lösung ein wenig Vorschlaghammer Charakter. Mit Regexp würde es wohl eleganter gehen. Ich schaue mir das nochmals an.

Gruss Scapa
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.