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

String in Cell Array suchen

 

Sarreb89

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.12.2015, 13:50     Titel: String in Cell Array suchen
  Antworten mit Zitat      
Moin Moin,

ich habe folgendes Problem:
Ich habe ein xml file welches mir zwei Spalten ausgibt in einer wiederholen sich immer die header und in der anderen die dazugehörigen Werte. Sprich, ich möchte das ganze so umsortieren, dass immer wenn in der einen Spalte 'Force' auftaucht, der dazugehörige Wert aus der anderen Spalte in ein Array geschrieben wird.

Ich habe schon folgenden Ansatz:
Code:
function  xmltocsv(ns1Val, ns1Name3)

i=1;
Position=1;
Force=1;
Current=1;
Voltage=1;
Resistance=1;
Timestamp=1;

for i=1:length(ns1Val)
   
    if ns1Name3{i} == 'Position'
        j=1;
        ns1Val(i)=Position(j);
        j=j+1;
    end
    if ns1Name3{i} == 'Force'
        k=1;
        ns1Val(i)=Force(k);
        k=k+1;
    end
    if ns1Name3{i} == 'Voltage'
        l=1;
        ns1Val(i)=Voltage(l);
        l=l+1;
    end
    if ns1Name3{i} == 'Current'
        m=1;
        ns1Val(i)=Current(m);
        m=m+1;
    end
    if ns1Name3{i} == 'Resistance'
        n=1;
        ns1Val(i)=Resistance(n);
        n=n+1;
    end
    if ns1Name3{i} == 'Timestamp'
        o=1;
        ns1Val(i)=Timestamp(o);
        o=o+1;
    end
   
   i=i+1;
end

M=[length(Force),6];
M= horzcat(Position, Force, Voltage, Current, Resistance, Timestamp);
dlmwrite(str, M, 'delimiter', ',', 'precision', 9);
end


Das geht bestimmt einfacher, ich bin aber noch Anfängerin, wenns ums programmieren geht.
Matlab gibtmir immer den folgenden Fehler: Error using ==
Matrix dimensions must agree.

Ich sitze grad wie ein Ochs vorm Berg und weiß nicht weiter, obwohl ich mich schon tot gegoogelt habe.
Es wäre super, wenn mir jemand sagen könnte was ich falsch mache, oder wie ich das ganze einfacher lösen kann.
Ich sage schonmal Danke!!!


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.12.2015, 13:57     Titel:
  Antworten mit Zitat      
Hallo,

zum Vergleich von Strings sollte man strcmp verwenden.

Zudem kann man das ganze deutlich kompakter und eleganter etwa so lösen:
Code:
a = 1:4;
b = 5:8;
c = zeros(size(name));
namea = strcmp(name, 'a');
c(namea) = a(namea);
nameb = strcmp(name, 'b');
c(nameb) = b(nameb);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
sarreb
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 05.12.15
Wohnort: Kiel
Version: 2015a
     Beitrag Verfasst am: 05.12.2015, 14:28     Titel:
  Antworten mit Zitat      
Hallo Harald,
danke schon mal für deine Antwort: Leider werde ich daraus nicht so richtig schlau. Ich hab mir auch gerade die Hilfe zu strcmp durchgelesen und wenn ich das richtig verstehe gibt der Befehlt doch nur 0 oder 1 zurück nicht aber die Position an der der String gefunden wurde.
Wenn ich es ausprobiere bekomme ich also ein array mit nullen und einsen. Beim nächsten Schritt tauchen bei mir allerdings wieder Fehlermeldungen auf.

Code:
c(namea) = a(namea);


Sehe ich es richtig, dass namea genau dieses array aus nullen und einsen ist? Jetzt hab ich aber ein Problem mit a und c beim Übertragen auf mein Problem. c ist das array, das mein endprodukt sein soll, richtig? Und a das Ausgangsarray?
Dann bekomme ich aber den Fehler: In an assignment A(I) = B, the number of elements in B and I must be the same.

Wahrscheinlich habe ich die Variablen jetzt falsch belegt, aber wie gehört es denn richtig?
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.12.2015, 17:58     Titel:
  Antworten mit Zitat      
Hallo,

du bekommst einen logischen Vektor, und der kann wiederum für logische Indizierung verwendet werden.

Zitat:
Wahrscheinlich habe ich die Variablen jetzt falsch belegt, aber wie gehört es denn richtig?

Poste doch bitte, was du versucht hast, dann kann man dir besser weiterhelfen.

Grüße,
Harald
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.