ALS erstes soll die erste spalte gelöscht werden da sie unwichtig ist
jetzt soll die erste zeile gelesen werden und die Signale als eine varialbe mit den jeweilgen werten gespeichert werden .
zum beispie:
signal1 =(3434, ..);
signal4 =(89787,...);
ich hoffe IHR könnt mir weiter helfen bin schon am verschweifeln
Hallo Gast,
wenn Du uns zeigst, was Du versucht hast und wo es scheitert (mit Kopie der Fehlermeldung oder Beschreibung des Unterschiedes zwischen Erwartungen und Ergebnissen), ist es viel einfacher, einen Verbesserungsvorschlag zu machen.
Welche Antwort erwartest Du, wenn Du uns nur die Aufgabenstellung mitteilst? Ein fertiges Programm??
Code:
FID = fopen(FileName, 'rb');
if FID < 0, error('Cannot open file'); end
Line1 = fgetl(FID);
NameList = strread(Line1, '%s', 'delimiter', ' ');
numName = length(NameList);
Numbers = fscanf(FID, '%f', Inf);
Numbers = reshape(Numbers, numName, []);
for iVar = 1:numName
Data.(NameList{iVar}) = Numbers(iVar, :);
end fclose(FID);
Ich würde sehr davon abraten, die Namen der Spalten direkt als Variablen zu verwenden! Falls eine Spalte "sum" heißt, könntest Du danach Matlab's SUM Befehl nicht mehr verwenden. Es ist deutlich sicherer, Felder in einem Struct zu benutzen.
Falls die Namen der Spalten Sonderzeichen enthalten: GENVARNAME...
Gruß, Jan
dieter
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.07.2010, 09:08
Titel:
also ich hab als erste die erste spalteund die erste zeile gelöscht dann
hab ich eine array erzeugt mit der ersten zeile
alles per hand
@ danke für die schnelle antwort aber leider bekomme ich einen fehler angezeigt :
Warning: 'Z5TPV Z5TCO Z5CCO Z4TPV
Z4TCO Z4CCO Z3TPV Z3TCO Z3CCO
Z2TPV Z2TCO Z2CCO Z1TPV Z1TCO TMB
GobTPV ARTPV'
exceeds MATLAB's maximum name length of 63
characters and has been truncated to
'Z5TPV Z5TCO Z5CCO Z4TPV Z4TCO
Z4CCO Z3TPV Z3TCO Z3CCO Z2TPV
Z2T'.
> In test at 9
??? Invalid field name: 'Z5TPV Z5TCO
Z5CCO Z4TPV Z4TCO Z4CCO Z3TPV
Z3TCO Z3CCO Z2TPV Z2T'.
Error in ==> test at 9
Data.(NameList{iVar}) = Numbers(iVar,
;
ich lese Textdateien gerne mit textread ein. Wenn Deine Datei beispielsweise 5 Spalten hast, in der ersten Text drin steht und diese nicht haben willst kannst Du das so machen:
Damit kann man einzelne Spalten einlesen. Die zweite Option gibt Dir die Spalten samt Typ und ob Du sie haben möchtest, also '%Variablentyp'. Wenn Du ein Sternchen davor machst wird sie nicht eingelesen. Vor dem Gleichheitszeichen musst Du dann entsprechend viele Einträge in der Matrix drin haben. 'headerlines' sagt dann einfach die Anzahl an Zeilen, die ignoriert werden, weil z.B. irgendwelcher Zusatztext drin steht. Ansonsten könnte Dir eventuell textscan helfen -> help textscan.
dieter
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.07.2010, 13:37
Titel:
hi CaDa
leider geht es net :S
das programm muss automatisch die erste zeile (header) als variablen erkennen
und die werte in den spalten als deren Werte schreiben. da ich mit den signalen weiter arbeiten muss.
2 Aspekte in meiner Antwort. In diesem Post steht der ideale Weg zum importieren, im zweiten Post nachher meine Kommentare zum post-processing.
Import: Man muss in 80% der Fälle nicht programmieren können. Lösungsweg für diesen Fall ('test.txt')
1. MATLAB Menü, File -> Import Data (auswählen 'test.txt')
2. Auf dem erscheinenden Fenster alle Standards übernehmen, aber zusätzlich noch unten rechts 'Generate MATLAB-code' auswählen. - > Next
3. Wieder alle Standards übernehmen -> Finish
4. Nun sind alle Daten korrekt im Workspace. Der Code zum wiederholen ist in der Datei die im Editor geöffnet ist zu sehen. Einfach als importfile.m speichern.
5. Test nach löschen des Workspaces: importfile('test.txt')
6. Fertig
Zum Post-Processing. Auch ich rate davon ab jede Zeile in einen separaten Variablennamen zu schreiben. Wenn es aber unbedingt sen muss:
1. Variablennamen mit String-Concatenation [], 'textdata' Inhalt sowie NUM2STR von Schleifenvariablen als Strings bilden.
2. Zuweisung der Werte aus 'data' auf die Variablennamen mittels EVAL.
Andreas
dieter
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.07.2010, 14:04
Titel:
@Andreas
kannst du bitte ma ein beispiel zeigen ``?
bin ein richtiger anfänger mit matlab :S
verstehe es net. noch net
und wie schreib ich das als ein prgramm ? weil ich eine langzeitmessung mache . muss es irgendwie schaffen dass ich nur auf "save and run" drücke und die signale automatisch gespeichert werden
da ich sie noch für weiter rechnungen brauche
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
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.