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

strrep: Cell elements must be character arrays

 

nsj
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 28.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2017, 14:16     Titel: strrep: Cell elements must be character arrays
  Antworten mit Zitat      
Hallo zusammen,
ich habe hier ein kleines Problem:
Ich lese eine Excel-Datei ein und möchte in einer neu Erstellten matrix alle Umlaute und Sonderzeichen ersetzen, allerdings scheine ich da etwas falsch zu machen. Vielleicht kann mir da jemand kurz aushelfen

Code:
%% (0) Parametereingabe (Bei Bedarf anpassen)
Par_DBLaufindex='CycID';     %vgl. 1. Spaltennamen der DB (Laufindex)

fprintf('################### \n\n Schritt 1/2: Bitte das einzulesende Ereignisprotkokoll auswählen.\n\n ###################')
[FileName,PathName] = uigetfile('*.xls','Select the MATLAB code file'); %Dialogfenster zur Dateiauswahl öffnen
filename=sprintf('%s%s',PathName,FileName);

[num,txt,raw] = xlsread(filename);   %xlsread mit integrierter Cell Array Erstellung in 3 Ausführungen (hier letzte rel.)    
GivenData= cell(size(raw,1),size(raw,2));

for k=1:size(raw,2)
    for L=1:size(raw,1)
        GivenData(L,k)=raw(L,k);        %Fehlermeldung:  ###################Error using strrep Cell elements must be character arrays.
    end
end

%Formale Anpassungen
   
    %Kennwerten 'Sw' zur Untescheidung der Kennwerte von GivenDB voranstellen
    for k=2:length(GivenData)
        AktuellerKennwert=cell2mat(GivenData(k,6));
        NeuerKennwert=sprintf('Sw%s',AktuellerKennwert);
        GivenData(k,6)=cellstr(NeuerKennwert);
    end
   
    %Relevante Sonderzeichen ersetzen, restliche löschen
    GivenData=strrep(GivenData, 'ä', 'ae');
    GivenData=strrep(GivenData, 'ü', 'ue');
    GivenData=strrep(GivenData, 'ö', 'oe');
    GivenData=strrep(GivenData, 'Ä', 'AE');
    GivenData=strrep(GivenData, 'Ü', 'UE');
    GivenData=strrep(GivenData, 'Ö', 'OE');
    GivenData(:,6)=strrep(GivenData(:,6), '-', 'MINUS');
    GivenData(:,6)=strrep(GivenData(:,6), '+', 'PLUS');
    GivenData(:,6)=regexprep(GivenData(:,6),'[^a-zA-Z0-9 ]','');
    GivenData=strrep(GivenData, ' ', '_');
    GivenData=strrep(GivenData, ',', '.');
   
   
   


Vielen Dank schon mal!

edit: Die Datei ist eine gemischte Tabelle, dessen Spalten jeweils aus Zahlen und Spalten besteht.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.07.2017, 19:04     Titel:
  Antworten mit Zitat      
Hallo,

die Fehlermeldung besagt ja, wo das Problem ist: man kann strrep nur auf Strings anwenden. WIe wäre es denn, wenn du txt statt raw verarbeitest?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 28.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2017, 22:23     Titel:
  Antworten mit Zitat      
Vorweg: Danke für deinen Beitrag. Die txt ist leider nicht geeignet, da dort die Spalten mit den Zahlen einfach leer sind. Wie wäre es denn, wenn ich alle Einträge in strings umwandeln würde? Wie würde ich das machen?
Bin relativ neu im Programmiergeschäft und wurde von meinem Betreuer leider etwas ins kalte Wasser geworfen.
Hoffe, man kann mir helfen
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.07.2017, 08:09     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Die txt ist leider nicht geeignet, da dort die Spalten mit den Zahlen einfach leer sind.

Das ist der Sinn der Sache. Strings und Zahlen werden generell unterschiedlich verarbeitet, also ist eine Trennung generell sinnvoll.

Wenn du das aber nicht möchtest, versuch mal, statt strrep diese Hilfsfunktion zu nutzen.

Code:
function str = strrep2(str, old, new)

str = cellfun(@(str) rep(str, old, new), str, 'UniformOutput', false);

function str = rep(str, old, new)
if ischar(str)
    str = strrep(str, old, new);
end


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