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

txt-Datei laden

 

01detlef
Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 07.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2010, 20:51     Titel: txt-Datei laden
  Antworten mit Zitat      
Hallo,

ich möchte gerne eine txt Datei in Matlab laden und bestimmte Spalten als Grafik darstellen!
Die txt Datei enthält auch Text, also muss ich irgendwie nur bestimmte Spaltenabschnitte aufrufen und als Grafik darstellen!
Ist sowas möglich? Über Hilfe würde ich mich sehr freuen!

MFG detlef
Private Nachricht senden Benutzer-Profile anzeigen


Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 07.05.2010, 21:22     Titel: Re: txt-Datei laden
  Antworten mit Zitat      
01detlef hat Folgendes geschrieben:
Hallo,

ich möchte gerne eine txt Datei in Matlab laden und bestimmte Spalten als Grafik darstellen!
Die txt Datei enthält auch Text, also muss ich irgendwie nur bestimmte Spaltenabschnitte aufrufen und als Grafik darstellen!
Ist sowas möglich? Über Hilfe würde ich mich sehr freuen!

MFG detlef


hallo,

ich hab erfahrung gemacht Matlab kann alles, ich befürchte er weiss sogar wann ich sterben werde ;)

es wäre hilfreich wenn du genauer erklärst wie deine datei aussieht , oder am besten ein beispiel hochladen. und wie dus darstellen möchtest.

grüsse
Private Nachricht senden Benutzer-Profile anzeigen
 
01detlef
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 07.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2010, 21:35     Titel:
  Antworten mit Zitat      
Hallo,

also ich frage mich halt, ob ich die komplette Datei laden sollte oder nur Spalten importieren??

Im Anhang habe ich solch eine Datei, wobei noch viel mehr Zahlen in die Spalten kommt und als Grafik möchte ich auf der x-Achse die erste Spalte (oder Zweite, weiss ich noch nicht genau) und auf der y-Achse die dritte Spalte.

MFG

test.txt
 Beschreibung:

Download
 Dateiname:  test.txt
 Dateigröße:  6.53 KB
 Heruntergeladen:  593 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 07.05.2010, 22:20     Titel:
  Antworten mit Zitat      
mit dem Load Befehl kannst du alles als Matrix speichern, und dann ist es einfacher darzustellen, da du jede spalte mit ihrem index adressieren kannst.

sind immer die ersten 3 zeilen Text oder ist es unterschiedlich?
Private Nachricht senden Benutzer-Profile anzeigen
 
josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 07.05.2010, 22:21     Titel:
  Antworten mit Zitat      
Hallo,

hier ist die Antwort:
Code:

fid = fopen('test.txt','r');
Inhalt=textscan(fid,'%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f','delimiter','\b','Headerlines',3);
 

Du kannst auch Anstatt die sovielen floats nur Strings verwenden. Allerdings muss es weiter verarbeitet werden.
Code:

textscan(fid,'%s','delimiter','\b','Headerlines',3);


Gruß

Jose
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
01detlef
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 07.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2010, 22:34     Titel:
  Antworten mit Zitat      
Hallo,

vielen dank, ich habe auch gerade in der Hilfe die Funktion textscan gefunden! Geht die fopen-Funktion auch für Dateien außer txt?

SO und nun möchte ich die Daten in der ersten Spalte als x-Wert darstellen und dritte Spalte als y-Wert.

Die Spalten kann ich doch mit Inhalt (1) und Inhalt (3) die Spalten "ansprechen" oder?

Kann man dann einfach plot (Inhalt(1),Inhalt(3)) machen? Ich möchte das ja gerne so speichern, dass ich das plotten kann und dann weiter für die FFT verwenden kann.

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 08.05.2010, 10:31     Titel:
  Antworten mit Zitat      
josekamara hat Folgendes geschrieben:
Hallo,

hier ist die Antwort:
Code:

fid = fopen('test.txt','r');
Inhalt=textscan(fid,'%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f','delimiter','\b','Headerlines',3);
 

Du kannst auch Anstatt die sovielen floats nur Strings verwenden. Allerdings muss es weiter verarbeitet werden.
Code:

textscan(fid,'%s','delimiter','\b','Headerlines',3);


Gruß

Jose


HI Jose,


andere Frage ich hab eine textdatei, ich hab in der ersten Spalte ein leeres Feld reingebaut. laut doc ist der default value of 'Emptyvalue' NaN.

wenn ich jetzt alle Spalten lese dann steht der NaN bei der letzten Spalte.
wie kann ich das verhindern?

danke

mytext.txt
 Beschreibung:

Download
 Dateiname:  mytext.txt
 Dateigröße:  2.47 KB
 Heruntergeladen:  470 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 08.05.2010, 15:56     Titel:
  Antworten mit Zitat      
In diesm Fall kannst du Folgendes verwenden:
Code:

hh = dlmread('mytext.txt');
 


Gruß

Jose
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 08.05.2010, 16:37     Titel:
  Antworten mit Zitat      
josekamara hat Folgendes geschrieben:
In diesm Fall kannst du Folgendes verwenden:
Code:

hh = dlmread('mytext.txt');
 


Gruß

Jose


hmmm da habe ich trozdem das gleiche problem, das leere feld an der ersten spalte wird durch den wert der 2.spalte ersetzt usw, am ende steht die 0 an der letzten spalte...ich guck weiter
Private Nachricht senden Benutzer-Profile anzeigen
 
01detlef
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 07.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.05.2010, 12:00     Titel:
  Antworten mit Zitat      
Hallo,

also ich hab immer noch nicht verstanden, wie ich jetzt z.b. von den Werten der dritten Spalte aus der Textdatei eine FFT machen kann und dann das Frequnzspektrum ausgeben kann?

Y = fft(X) steht in der Hilfe, aber was ist X bei mir und reicht dann plot(Y)

?

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Phate
Forum-Guru

Forum-Guru



Beiträge: 283
Anmeldedatum: 09.11.09
Wohnort: Stuttgart
Version: R2008b
     Beitrag Verfasst am: 09.05.2010, 13:51     Titel:
  Antworten mit Zitat      
Hi,

Also zu deiner zweiten Frage:
Code:


X ist das Signal von dem du die Fourier Transformation machen möchtest. Das Ergebnis der Transformation wird dann in Y abgelegt.

Hoffe das hilft dir weiter.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 07.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.05.2010, 14:06     Titel:
  Antworten mit Zitat      
Ich kann doch eigentlich das Beispiel nehmen und dann die Werte für t und y ersetzen oder? Die Werte bekomme ich ja aus der txt-Datei würde ich jetzt sagen und L muss ich einlesen!
Code:

Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = 1000;                     % Length of signal
t = (0:L-1)*T;                % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
y = x + 2*randn(size(t));     % Sinusoids plus noise
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')

NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);

% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
 


ALso
Code:

fid = fopen('test.txt','r');
Inhalt=textscan(fid,'%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f','delimiter','\b','Headerlines',3);
fclose(fid);
Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = length(Inhalt); ??                    % Length of signal
t =  (0:L-1)*T  ??         % Time vector

y= Inhalt(3) ??

 


Das ganze andere kann doch so bleiben oder nicht?

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 09.05.2010, 14:33     Titel:
  Antworten mit Zitat      
01detlef hat Folgendes geschrieben:
Ich kann doch eigentlich das Beispiel nehmen und dann die Werte für t und y ersetzen oder? Die Werte bekomme ich ja aus der txt-Datei würde ich jetzt sagen und L muss ich einlesen!
Code:

Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = 1000;                     % Length of signal
t = (0:L-1)*T;                % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
y = x + 2*randn(size(t));     % Sinusoids plus noise
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')

NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);

% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
 


ALso
Code:

fid = fopen('test.txt','r');
Inhalt=textscan(fid,'%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f','delimiter','\b','Headerlines',3);
fclose(fid);
Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = length(Inhalt); ??                    % Length of signal
t =  (0:L-1)*T  ??         % Time vector

y= Inhalt(3) ??

 


Das ganze andere kann doch so bleiben oder nicht?

mfg


du greifst auf eine 3.spalte mit
Code:

und L wäre in deinem Fall:

Code:
L=length(Inhalt{3})

soweit ich dich richtig verstanden habe
Private Nachricht senden Benutzer-Profile anzeigen
 
01detlef
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 07.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.05.2010, 14:50     Titel:
  Antworten mit Zitat      
Code:


Da müsste ja die Zeit-Spalte rein oder? Also bei mir Spalte 1?!

Es gibt ein Problem mit dem plot:
??? Index exceeds matrix dimensions.

Error in ==> Untitled at 13
plot(Fs*t(1:50),y(1:50))

Code:

fid = fopen('test.txt','r');
Inhalt=textscan(fid,'%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f','delimiter','\b','Headerlines',3);
fclose(fid);

Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L=length(Inhalt{1}) ;                     % Length of signal
t = (0:L-1)*T;                % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
%x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
%y = x + 2*randn(size(t));     % Sinusoids plus noise
y = Inhalt{3};
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')

NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);

% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')

 


vielen dank
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 09.05.2010, 15:04     Titel:
  Antworten mit Zitat      
01detlef hat Folgendes geschrieben:
Code:


Da müsste ja die Zeit-Spalte rein oder? Also bei mir Spalte 1?!

Es gibt ein Problem mit dem plot:
??? Index exceeds matrix dimensions.

Error in ==> Untitled at 13
plot(Fs*t(1:50),y(1:50))

Code:

fid = fopen('test.txt','r');
Inhalt=textscan(fid,'%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f','delimiter','\b','Headerlines',3);
fclose(fid);

Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L=length(Inhalt{1}) ;                     % Length of signal
t = (0:L-1)*T;                % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
%x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
%y = x + 2*randn(size(t));     % Sinusoids plus noise
y = Inhalt{3};
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')

NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);

% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')

 


vielen dank


in deinem Beispiel sind t und y nur 33 lang.
und mit :
Code:
plot(Fs*t(1:50),y(1:50))

versuchst auf bis dem 50.wert zuzugreifen
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.