Matlab txt file einlesen

Hallo ich habe eine Grössere Aufgabe in Matlab zu lösen.
Ich stelle hier mal ein Teilproblem, wenn das läuft gehe ich einen Schritt weiter.

Also ich möchte von einem txt file die Daten einlesen. Es beginnt so:
Source File Name: oGK_oG_per_Inc_100mV_070926_02
Signal: FFT - Vib & Ref1 H1 Weg / Spannung - Ampl. [dB] & Phase
dB-Referenz: 0 dB = 1 m / V
Frequenz Amplitude Phase
[Hz] [dB] [°]
100 -142.9775 168.9382
112.5 -159.3902 -55.99666
125 -161.812 -77.73595
137.5 -162.4709 -139.4169
150 -161.6918 109.0202

also zuerst Text dann 3 Spalten mit Werten die mich eigentlich interessieren.
Versucht habe ich mal folgender Code:

clear
fid=fopen(‚oGK_oG_per_Inc_100mV_070926_02.txt‘,‚r‘); % wenn Datei nicht vorhanden setzt Matlab fid=-1
%ueberprüfen ob Datei vorhanden
if fid == -1
warning(‚Datei nicht gefunden‘) % wenn nicht wird eine Warnung ausgegeben

else
end

A=fscanf(fid, ‚%f %f %f‘,[3 inf])’; % %f ist Umwandlung der Zahlen in double
% 3 Spalten bis Ende inf und da Einlesen Zeilenweise geschieht,
% aber Auffülen der Matrixe spaltenweise muss die Matrixe noch transformiert werden

fclose(fid);

Jedoch sind dann in der Matrix A die Werte nicht drin.
Das ist das erste Problem.

Ich beschreibe das ganze Projekt hier einmal.
Zuerst möchte ich über ein GUI gefragt werden, ob ich Daten hinzufügen möchte. Diese wären dann die vorherigen beschriebenen txt files. Ich soll den Pfad wählen können, wo das file zu holen ist und an welcher Stelle ich die Spalten in der Gesamtmatrix platzieren will. Dann ruft das GUI eine Funktion auf übergibt Pfad und Position der Funktion und diese erzeugt dann den Vektor und fügt diesen dann in der Gesamtmatrix ein. Die Vektoren sollen fortlaufend als A B C etc. verfügbar sein. Der Grund aus dem ich zuerst eine NUllmatrix erzeuge und dann die Vektoren einfüge und daraus die Gesamtmatrix ergibt ist, dass gewisse Daten fehlen und dort eine Null stehen soll.
Hoffentlich blickt da jemand noch durch!!

Versuchs mal mit der MATLAB funktion xlsread. Setzt allerdings voraus, dass du Excel hast. Dann müsstest du außerdem noch das txt file nehmen und da ne excel tabelle draus machen.

Versuchs mal mit der MATLAB funktion xlsread. Setzt allerdings
voraus, dass du Excel hast. Dann müsstest du außerdem noch das
txt file nehmen und da ne excel tabelle draus machen.

Die Daten sind leider in Textfiles doch das kann Matlab auch. Nur weiss ich eben nicht wie.

Hallo,

das sollte tun:

function A = parser(filename)
fid=fopen(filename,'r');
if fid == -1
 warning('Datei nicht gefunden') ;
end;
for i=1:5
 header = fgetl(fid);
end;
A=fscanf(fid,'%f %f %f',[3 inf]);
A=A'

greetings s.

Nochmal ich,

Ich beschreibe das ganze Projekt hier einmal.
Zuerst möchte ich über ein GUI gefragt werden, ob ich Daten
hinzufügen möchte. Diese wären dann die vorherigen
beschriebenen txt files. Ich soll den Pfad wählen können, wo
das file zu holen ist und an welcher Stelle ich die Spalten in
der Gesamtmatrix platzieren will.

Das ist mit mlab alles sehr einfach zu machen. Suche nach uigetfile.

Der Grund aus dem ich zuerst eine
NUllmatrix erzeuge und dann die Vektoren einfüge und daraus
die Gesamtmatrix ergibt ist, dass gewisse Daten fehlen und
dort eine Null stehen soll.
Hoffentlich blickt da jemand noch durch!!

Nullmatrix? gewisse Daten? Nö!!

greetings s.

Als Bespiel ein Tournier an dem jede Mannschaft gegeneinander spielt gibt verschiedene Spiele. Ich habe hier statt Mannschaften verschiedene Parameter wie Spannung, Anordnung des Aktuators usw. Nur sind nicht alle Möglichkeiten gemessen worden. Es soll aber die Möglichkeit bestehen diese nachher noch anzufügen. Die Gesamtmatrix hatt dann folgende Struktur: 1 Objekt 1Messung Amplitude und Phase 1Objekt 2 Messung Amplitude und Phase … dann 2 Objekt…etc.

MOD: Überflüssiges Vollzitat gelöscht.

Leider das gleiche Problem.
Das Programm läusf ohne Felermeldung
Wenn ich die Matrix A aufrufe existiert diese nicht

MOD: Überflüssiges Vollzitat gelöscht.

hallo,

ich hab vor kurzen was ganz ähnliches programmiert. ich hab allerdings die funktion textscan verwendet, damit lässt sich prinzipiell alles machen. grundsätzlich scannt textscan so wie du es ihm sagst und bleibt dann an der betreffenden stelle stehen, wenn du textscan nochmals ausführst dann geht er automatisch an der letzten stelle weiter.

ich würde das also so machen:

textscan(fid,’%s’,6,‚delimiter‘,’\n’) scannt die datei fid, format %s, sechsmal bis zur neuen zeile (’\n’). damit solltest du in der zeile mit den zahlenwerten landen. dann scannst du mit
vec = textscan(fid,’%n’,3) drei zahlenwerte ein. eventuell musst du den delimiter ändern falls er wiederholte leerstellen als einzelne elemente erkennt (mit den tabs zwischen den zahlen sollte es aber funktionieren), diese drei zahlenwerte ordnest du einer matrix zu
Ergebnis(i,:smile: = [vec{1}(1) vec{1}(2) vec{1}(3)]. das ganze machst du i-mal, bis der vektor vec leer ist (ende der datei)
while length(vec{1}) ~= 0
und damit solltest du alles beisammen haben.

falls du es nicht hinbekommst kannst du mir gerne eine beispieldatei schicken, ihc habs in zehn minuten fertig.

grüße,
sebastian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

mit deinen Beispieldaten läuft das hier durch. Du weisst das das ne Funktion ist die als m-file gespeichert werden muss und mit Funktionname und Textfilename aufgerufen werden muss?

Leider das gleiche Problem.
Das Programm läusf ohne Felermeldung
Wenn ich die Matrix A aufrufe existiert diese nicht

Mann, Mann …

greetings s.

Das Programm läusf ohne Felermeldung
Wenn ich die Matrix A aufrufe existiert diese nicht

ja, wahrscheinlich weil sie nicht „global“ ist, d.h. die Variablen werden nach der Prozedur wieder gelöscht. Dies kannst du umgehen, wenn du sie global wählst. Dann solltest du mit dieser weiterrechnen können.

hast du nach A=A’ ein Semikolon stehen? Dieses mal entfernen.