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

Inhalt bestimmter Zellen mit "NA" ersetzen

 

DasFragezeichen
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 13.12.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2016, 21:09     Titel: Inhalt bestimmter Zellen mit "NA" ersetzen
  Antworten mit Zitat      
Guten Abend,

in Excel habe ich einige Berechnungen durchgeführt, bei welchen die entsprechende Formel nicht immer korrekt gearbeitet hat. Als Ergebnis dieser teilweise fehlerhaften Berechnung erzeugte Excel einen Fehlercode in der jeweiligen Zelle - diese Situation ist soweit nicht schlimm.
Zur Weiterverarbeitung der Daten habe ich die Excel-Datei in Matlab importiert. Nun ist mein Ziel sämtliche Zellen mit dem Inhalt „ActiveX VT_ERROR:“ durch „NA“ zu ersetzen.

Leider bin ich – vermutlich – auf halber Strecke vom Weg abgekommen, da ich es bisher wohl nur geschafft habe, die relevanten Zellen zu erfassen. Ein Ersetzen dieser Zellen ist mir bisher leider noch nicht gelungen.

Folgenden Code wende ich auf die bereits eingelesene Datei an:

Code:
index = ~cellfun('isempty', strfind(variable(:,:), 'ActiveX VT_ERROR:'));



Vielen Dank für die Hilfe

Viele Grüße
DasFragezeichen
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 25.02.2016, 21:41     Titel:
  Antworten mit Zitat      
wenn du code postest dann immer auch sagen was nicht klappt. wie wichen die ergebnisse von den erwarteten ab. welche fehlermeldungen gibt es. es ist viel einfacher wenn du uns das sagst und wir das nicht erraten müssen
sihe dazu den beitrag aus meinem kommentar.
meinst du sowas?
Code:
variable={'test',3,'ActiveX VT_ERROR:'}
strrep(variable(cellfun(@(x) ischar(x), variable)), 'ActiveX VT_ERROR:','NA')

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
DasFragezeichen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 13.12.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2016, 22:22     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Antwort, Winkow.

Der Code, den ich gepostet habe, erscheint mir zunächst einmal nicht problematisch. Erst im Anschluss wird es schwierig, da ich nicht weiß, wie ich die mit „1“ erfassten Zellen der umfangreichen Matrix verändern kann.

Im Anschluss an die obere Codezeile habe ich folgenden Befehl probiert:
Code:
Variable(index, :) = 'NA';


Dieser erwies sich jedoch als falsch, was der Fehler „Conversion to cell from char is not possible.“ Aussagte. Da ich die Zeile einmal zum Entfernen von bestimmten Einträgen (gefunden durch meinen o. g. Cellfun-Code) genutzt habe – habe ich gehofft – diese auch jetzt nutzen zu können. Offensichtlich ein Irrtum, wie sich gezeigt hat.

Dein Code scheint das auszuführen, was ich mir wünsche. Die einzige Schwierigkeit ist, dass er die korrigierten Inhalte in einen Vektor schreibt. Meien Ausgangsdatei ist jedoch eine Matrix, die in ihrer Struktur erhalten bleiben muss.

Zur besseren Illustration habe ich dem Anhang eine Excel-Tabelle mit zwei Tabellenblättern („ist“ und „soll“) beigefügt.

beispiel.xls
 Beschreibung:

Download
 Dateiname:  beispiel.xls
 Dateigröße:  46.5 KB
 Heruntergeladen:  271 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 25.02.2016, 22:31     Titel:
  Antworten mit Zitat      
aus gegebenem anlass öffne ich keine excel files aus unbekannter quelle
wie man auf elemente des cells zugreift hab ich ja oben schon geschrieben
zur vollständigkeit nochmal mit expliziter zuweisung
Code:
variable={'test',3,'ActiveX VT_ERROR:'}
variable(cellfun(@(x) ischar(x), variable))=strrep(variable(cellfun(@(x) ischar(x), variable)), 'ActiveX VT_ERROR:','NA')

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
DasFragezeichen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 13.12.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.02.2016, 22:47     Titel:
  Antworten mit Zitat      
Besten Dank für deine Hilfe, Winkow!

Der Code hat wunderbar funktioniert. Als Anfänger hätte ich mir natürlich noch dezent gewünscht, dass mein Vorhaben einfacher zu realisieren gewesen wäre…, aber letztendlich zählt das Ergebnis!

Die aktuell grassierende Virenseuche ist mir völlig entfallen. Shocked Daher habe ich meine Vorstellungen diesem Beitrag nochmal in zwei Matlab-Dateien angehängt. Vielleicht nützen die Inhalte ja zukünftigen Interessierten, die unschlüssig sind, ob mein Problem (und dessen Lösung) auch zu ihrem Problem passen.

soll.mat
 Beschreibung:
Gewünschter Zustand (mit "NA") der Tabelle

Download
 Dateiname:  soll.mat
 Dateigröße:  21.32 KB
 Heruntergeladen:  294 mal
ist.mat
 Beschreibung:
IST-Zustand der Tabelle

Download
 Dateiname:  ist.mat
 Dateigröße:  21.57 KB
 Heruntergeladen:  297 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 25.02.2016, 23:17     Titel:
  Antworten mit Zitat      
bei den beispiel daten geht auch
Code:
soll=strrep(ist,'ActiveX VT_ERROR:','NA')

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
DasFragezeichen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 13.12.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2016, 02:43     Titel:
  Antworten mit Zitat      
Klasse! So habe ich mir "einfach" vorgestellt. Laughing Danke!

Interessanter Weise hatte ich die Funktion vorhin selbst kurzzeitig in der Hand. Allerdings wollte irgendetwas nicht so recht funktionieren.

Nichtsdestotrotz kann mir deine andere Funktion ebenfalls einmal nützlich sein.
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.