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

Anfängerfrage

 

Ty_du
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 13.12.16
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 13.12.2016, 16:49     Titel: Anfängerfrage
  Antworten mit Zitat      
Hallo zusammen,

vorab möchte ich mich für die wahrscheinlich nicht so optimale Ausdrucksweise entschuldigen, aber ich bin hinsichtlich MATLAB blutiger Anfänger. Ich möchte MATLAB benutzen, da ich für meinen Beruf größere Datenmengen routinemäßig (über Programme denke ich...) bestimmten Bearbeitungsschritten unterziehen möchte. Ich habe mich jetzt an MATLAB gesetzt und mir eine bsp.hafte .txt - Datei geschrieben - folgender Inhalt:

1,2,3,4,5,6,7,8,9,10
(die Leerzeile ist innerhalb des Dokuments eigentlich nicht drin...)
10,11,12,13,14,15,16,17,18,19,20

Mein Ziel ist es nun diese einzulesen und eventuell Überschriften zu den einzelnen Säulen hinzuzufügen und später hinaus einzelne Säulen zu gruppieren und zu mitteln. Das Problem ist, dass ich nicht mal dieses einfach txt - Dokument in Tabellenform in MATLAB einlesen kann...

Habe diesen Code benutzt
Code:

tmp_data = importdata('new2.txt',',')
 


bekomme in Matlab aber nur die erste Zeile - sieht dann in MATLAB so aus:

tmp_data =

1 2 3 4 5 6 7 8 9 10

Kann mir vllt irgendjemand hierbei helfen - ich weiß, dass es sicher nicht schwer ist, aber ich verstehe das leider überhaupt nicht...

Vielen Dank im voraus =)

new2.txt
 Beschreibung:
Meine txt Datei

Download
 Dateiname:  new2.txt
 Dateigröße:  52 Bytes
 Heruntergeladen:  305 mal
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: 13.12.2016, 17:22     Titel:
  Antworten mit Zitat      
Hallo,

die Zeilen haben unterschiedlich viele Spalten. Ist das beabsichtigt?

Bei mir liest importdata alle Daten ein, die 20 rutscht aber in die nächste Zeile. Welche Version verwendest du?

Grundsätzlich würde ich für tabellarische Daten Tables (z.B. readtable) verwenden. Da werden dann die Überschriften gleich mit den Daten mit importiert.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 13.12.16
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 13.12.2016, 19:09     Titel:
  Antworten mit Zitat      
Ich verwende MATLAB R2014a als Version. Ok, ich habe es eben beim Markieren in der txt Datei gesehen. Nein, war es eigentlich nicht. Habe jetzt vor jede einstellige Zahl eine 0 gesetzt, das sollte zumindest dieses Problem lösen.
OK. Das bedeutet: >>>readtable(new2.txt) ?
Falls ja, kann ich mir für die Zukunft merken, dass ich, so fern ich tabellarische Ansichten möchte, immer die readtable - Fkt verwende oder ist das nicht zu pauschalisieren?

Vielen Dank schonmal für die Hilfe =)
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: 13.12.2016, 21:32     Titel:
  Antworten mit Zitat      
Hallo,

Dateinamen als String übergeben und Rückgabeargument zurückholen:
Code:
T = readtable('new2.txt');


Und ja, Tables sind sehr gut für tabellarische Daten geeignet.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 13.12.16
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 14.12.2016, 16:29     Titel:
  Antworten mit Zitat      
Vielen Dank Harald,

ich hoffe es nervt nicht, wenn ich hier dauernd Dinge erfrage, sobald ich nicht weiter komme... Embarassed
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: 14.12.2016, 16:38     Titel:
  Antworten mit Zitat      
Hallo,

wenn's nervt, merkst du das schon Twisted Evil
Aber nein, alles im grünen Bereich.

Wenn du das Gefühl hast, zu sehr von einem Problem zum anderen zu stolpern, kann das MATLAB Onramp hilfreich sein.
https://matlabacademy.mathworks.com/

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 13.12.16
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 14.12.2016, 17:25     Titel:
  Antworten mit Zitat      
Das sieht ja ziemlich gut aus. Wie immer - vielen Dank =) Werd ich mal parallel anfangen!

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Ty_du
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 13.12.16
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 14.12.2016, 17:50     Titel:
  Antworten mit Zitat      
Ich hab leider direkt noch eine Frage, da ich an diesem Punkt nicht weiterkomme =(

Und zwar möchte ich ein tab getrennte txt Datei einlesen und mein code sieht so aus:
Code:

table_1 = readtable('Martin_ChAverage_DeoxyHb_M1.txt','delimiter','tab','ReadVariableNames', false);
table_1.Properties.VariableNames = {'HbO_0' 'HbO_20' 'HbO_40'};
s = table2array(table_1);
plot(s(:,1), s(:,1:end));
 


Bekomme diese Fehlermeldung:
Code:
>> NIRS_einlesen_beschriften_plotten
Error using table/subsasgnDot (line 56)
The VariableNames property must contain one name for each variable in the table.

Error in table/subsasgn (line 66)
    t = subsasgnDot(t,s,b);

Error in NIRS_einlesen_beschriften_plotten (line 2)
table_1.Properties.VariableNames = {'HbO_0' 'HbO_20' 'HbO_40'};
 


Ich möchte diese Art von Dateien einlesen, die drei Säulen beschriften und danach plotten. Laut sämtlichen Internetquellen ist mein Vorgehen korrekt...ich verstehe nicht ganz was ich hier falsch mache...

Martin_ChAverage_DeoxyHb_M1.txt
 Beschreibung:
Das ist die besagte txt Datei

Download
 Dateiname:  Martin_ChAverage_DeoxyHb_M1.txt
 Dateigröße:  11.52 KB
 Heruntergeladen:  283 mal
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: 14.12.2016, 18:16     Titel:
  Antworten mit Zitat      
Hallo,

wenn du auf Probleme stößt, schau dir immer die Variablen im Workspace an. table_1 hat nur eine Spalte, die Daten wurden also nicht richtig importiert.

Wenn du das 'delimiter', 'tab' weglässt, werden die drei Spalten korrekt importiert, und dann klappt auch der folgende Befehl.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 13.12.16
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 14.12.2016, 21:01     Titel:
  Antworten mit Zitat      
Ok, dann habe ich aber ein Verständnisproblem. Wenn ich die txt Datei öffne, sind da doch 3 unterschiedliche Spalten. Es handelt sich dabei um 3 Messwertreihen, deswegen will ich diese drei auch darstellen...Wieso denkt erkennt es nur 1 spalte obwohl drei zu sehen sind??

2.7342587e-06 2.4097953e-06 -1.9837548e-06
2.0994853e-06 1.9297590e-06 -6.5335628e-07
1.1230946e-06 1.1028336e-06 3.0083490e-07
-2.0080985e-07 -9.4199118e-08 8.4052492e-07
-1.8720229e-06 -1.6800092e-06 9.3493164e-07
-3.8840058e-06 -3.6681795e-06 5.6081960e-07
-6.2239648e-06 -6.0665200e-06 -2.9613955e-07
-8.8726905e-06 -8.8770432e-06 -1.6419673e-06
-1.1805485e-05 -1.2096032e-05 -3.4729080e-06
-1.4991948e-05 -1.5714110e-05 -5.7764581e-06
-1.8396247e-05 -1.9715000e-05 -8.5299621e-06
-2.1977621e-05 -2.4076517e-05 -1.1702090e-05


Also so sieht die Datei - hab nur die ersten paar Zeilen kopiert - aus.
Wie gesagt ich möchte diese drei Spalten auch als drei Spalten einlesen...
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: 14.12.2016, 21:28     Titel:
  Antworten mit Zitat      
Hallo,

salopp gesagt: weil du readtable mit deinen Angaben irritiert hast. readtable dachte, dass die Zeichenfolge 'tab' als Trennzeichen verwendet werden soll. Du müsstest für Tab wenn '\t' angeben. Allerdings habe ich das versucht, und es hat nicht funktioniert - weglassen der Option dagegen schon.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 13.12.16
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 14.12.2016, 23:49     Titel:
  Antworten mit Zitat      
Ok, also wenn du folgenden Code eingibst:

Code:

table_1 = readtable('Martin_ChAverage_DeoxyHb_M1.txt','ReadVariableNames', false);
table_1.Properties.VariableNames = {'HbO_0' 'HbO_20' 'HbO_40'};
s = table2array(table_1);
plot(s(:,1), s(:,1:end));
 


wird dadurch ein table_1 mit 236x3 erstellt? Bei mir kommt nämlich immer diese Fehlermeldung =( =(
Code:

Error using table/subsasgnDot (line 56)
The VariableNames property must contain one name for each variable in the table.

Error in table/subsasgn (line 66)
    t = subsasgnDot(t,s,b);

Error in NIRS_ (line 2)
table_1.Properties.VariableNames = {'HbO_0' 'HbO_20' 'HbO_40'};
 


Ist da irgendwo ein grober Fehler, den ich begehe??

Viele Grüße und sorry für meine Unfähigkeit Rolling Eyes

NIRS_einlesen_beschriften_plotten.m
 Beschreibung:
mein skript

Download
 Dateiname:  NIRS_einlesen_beschriften_plotten.m
 Dateigröße:  318 Bytes
 Heruntergeladen:  277 mal
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: 15.12.2016, 00:15     Titel:
  Antworten mit Zitat      
Hallo,

bei mir ja. Wenn du eine ältere Version von MATLAB verwendest (es wäre hilfreich zu wissen welche), kann sich das Verhalten von einzelnen Befehlen aber unterscheiden.

Schau doch bitte im Workspace, welche Dimensionen die Variable hat. Du kannst sie auch doppelklicken, um dir den Inhalt der Variable anzusehen. Das Problem liegt jedenfalls schon bei der Erstellung der Variablen mit readtable, nicht erst bei der Umbenennung.

Alternativ kannst du's mal mit Rechtsklick auf die Datei versuchen, und dann Import Data.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 13.12.16
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 15.12.2016, 00:40     Titel:
  Antworten mit Zitat      
Ich verwende die Version R2014a. Ist irgendein Befehl für diese Version ungeeignet? Habe ich da steht ja immer 236x1, es scheint die 2 anderen Spalten nicht als solche wahrzunehmen.

Hab es über importdata geschafft:
Code:

filename = 'Martin_ChAverage_DeoxyHb_M1.txt';
delimiterIn = ' ';
headerlinesIn = 0;
A = importdata(filename,delimiterIn,headerlinesIn);
 


Hier bekomme ich A = 236x3 double - also es zeigt es korrekt an. Wie kann ich denn hier noch die Variablen den Säulen zuweisen: also die 1. HbO_0 die zweite Hb_20 und die dritte Hb_40.?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Ty_du
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 13.12.16
Wohnort: ---
Version: R2014a
     Beitrag Verfasst am: 15.12.2016, 01:06     Titel:
  Antworten mit Zitat      
Es hat geklappt =) =) =)

mit:
Code:

filename = 'Martin_ChAverage_DeoxyHb_M1.txt';
delimiterIn = ' ';
headerlinesIn = 0;
A = importdata(filename,delimiterIn,headerlinesIn);
T = array2table(A, 'VariableNames', {'HbO_0' 'HbO_20' 'HbO_40'});
 


Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.