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

Schleifenproblem beim finden von peaks

 

mora
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 02.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2012, 12:25     Titel: Schleifenproblem beim finden von peaks
  Antworten mit Zitat      
moin leute,

ich habe mehrere mat-dateien. diese sollen nacheinander nach den zwei höchsten peaks durchsucht werden, woraus dann der mittelwert gebildet wird (das funktioniert). anschließend sollen diese werte fortlaufend in spalte A in eine excel geschrieben werden.
hier kommen zwei probleme auf. das eine ist, dass das schreiben der excel nur fehlerhaft funktioniert. das zweite, was bei mir auch viel mehr fragen aufwirft, dass für B(siehe code) viel mehr und zudem falsche werte eingelesen werden, die gar nicht in der entsprechenden datei vorkommen. ich weiß einfach nicht wo der fehler liegt und wo matlab diese werte hernimmt.

Code:
clc
clear all

Quellordner='Pfad';
A=dir(Quellordner);
files=(A.name)

for D=1:length(A);
% einlesen der Dateien
File= [Quellordner '\' A(D,1).name];


%Absolutwerte bilden
B=abs(File)
%Werte nach Größe ordnen
[sortedValues,sortIndex] = sort(B(Smile,'descend');

maxIndex = sortIndex(1:2); % Get a linear index into A of the 15 largest values

sortedValues = unique(B(Smile); % Unique sorted values
maxValues = sortedValues(end-1:end); % Get the 2 largest values
%maxIndex = ismember(A,maxValues); % Get a logical index of all values
% equal to the 5 largest values

%Mittelwert bilden
C=(sum(maxValues))/2

newData1 = C;
data=newData1;
clear newData1
clear B


%Tabelle anlegen
for i=1:1:numel(files)
xlswrite('Dateiname.xls', data, 1, ['A' num2str(i)]);
end
end


für B erhalte ich

B =

Columns 1 through 21

69 58 92 68 97 116 101 110 92 77 111 114 97 119 105 101 116 122 92 84 101

Columns 22 through 32

115 116 92 49 48 48 107 72 122 92 46


Eine beispieldatei ist angehängt.

Grüße
Mora

tv11.TXT
 Beschreibung:
.txt. liegt mit gleichem inhalt als mat vor

Download
 Dateiname:  tv11.TXT
 Dateigröße:  83 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: 07.12.2012, 12:29     Titel:
  Antworten mit Zitat      
Hallo,

Hilft dir denn die Antwort in
http://www.gomatlab.de/schleifenproblem-t26503.html
schon mal weiter?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 02.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2012, 12:53     Titel:
  Antworten mit Zitat      
hallo harald,

habe es über load probiert

Code:
clc
clear all

Quellordner='Pfad';
A=dir(Quellordner);
files=(A.name)
daten = cell(length(files),1);

for i=1:length(files);;
    %einlesen der Dateien
    daten{i}=load(files{i});
   

%Absolutwerte bilden
B=abs(daten{i});

...


Fehler:
files =

.

??? Cell contents reference from a non-cell array object.

Error in ==> Auswertung_002 at 13
daten{i}=load(files{i});

>>

sollte das nicht eigentlich wie angegeben funktionieren?

die excel sieht wie folgt aus(siehe anhang).
ich werde es aber anders probieren.
also alle werte in eine matrix schreiben und diese dann gesammelt in die excel schreiben. meinst du das so?

vielen dank.

grüße
mora

Dateiname.xls
 Beschreibung:

Download
 Dateiname:  Dateiname.xls
 Dateigröße:  14 KB
 Heruntergeladen:  287 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: 07.12.2012, 14:58     Titel:
  Antworten mit Zitat      
Hallo,

kleiner Fehler im Code:
Code:
files={A.name}


Zudem würde ich den dir-Befehl einschränken, z.B.
Code:
A=dir(fullfile(Quellordner, '*.mat'));


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 02.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2012, 16:28     Titel:
  Antworten mit Zitat      
hi,

danke für den tip, es hakt aber immernoch bei

files =

'tv11.TXT.mat' 'tv12.TXT.mat' 'tv13.TXT.mat'

??? Error using ==> load
Unable to read file tv11.TXT.mat: No such file or directory.

Error in ==> Auswertung_002 at 14
daten{i}=load(files{i});


Code:
clc
clear all

Quellordner='Pfad';
A=dir(fullfile(Quellordner, '*.mat'));
%A=dir(Quellordner);
files={A.name}
daten = cell(length(files),1);

for i=1:length(files);
    %D=1:length(A);
    %einlesen der Dateien
    %File= [Quellordner '\' A(D,1).name];
    daten{i}=load(files{i});
    %newData1=importdata(File)
    %data=newData1.data

%Absolutwerte bilden
B=abs(daten{i});
...


grüße und schönes wochenende
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: 07.12.2012, 16:32     Titel:
  Antworten mit Zitat      
Hallo,

mir ist auch nicht klar, wie diese merkwürdigen Dateinamen zustandekommen. Wenn du aber nach txt-Dateien suchen willst, musst du logischerweise das *.mat in *.txt umändern.

Wenn die Dateien nicht im momentanen Verzeichnis liegen, musst du zudem den Quellordner noch davor hängen (absoluter Pfad).

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.12.2012, 21:46     Titel:
  Antworten mit Zitat      
Hallo mora,

Ein "clear all" verschwendet Zeit, da es alle geladenen Funktionen aus dem Speicher löscht. Das Nachladen von der Festplatte ist ziemlich aufwändig. Ich habe noch nie einen Fall gesehen, in dem dies wirklich für irgendetwas nützlich war, denn eigentlich war immer nur ein "clear variables" gemeint. Das ist deulich Resourcen-schonender. Trotzdem trifft man "clear all" inflationär oft im Code an, den Leute im Forum posten. Wieso eigentlich? Hat das irgenjemand mal empfohlen? Und wenn ja, wer und wozu?

Code:
Quellordner='Pfad';
A=dir(fullfile(Quellordner, '*.mat'));
files={A.name}

Nun enthält "files" die Namen der Files im Ordner "Pfad" - aber nur die Namen mit File-Extension, nicht aber den Ordner.
Code:
daten{i}=load(files{i});

Dies sucht nun im gerade aktuellen Ordner nach diesem File. LOAD versucht schlau zu sein und wenn es ein File nicht findet, hängt es automatisch ".mat" an und sucht nochmal. Dann erzeugt es die Fehlermedlung, die Du siehst.

Besser:
Code:
daten{i} = load(fullfile(Quellordner, files{i}));

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
mora
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 02.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2012, 15:15     Titel:
  Antworten mit Zitat      
hallo haradl, hallo jan,

danke für die antworten. muss momentan eine andere aufgabe erledigen und werde hier weitermachen sobald es geht und eure tips ausprobieren.

@harald: das ".TXT" ist teil des dateinamens und bei der formatierung zustande gekommen. es stört hier nicht, mit einzelnen dateien habe ich schon problemlos arbeiten können.

@jan: mir wurde das mal so beigebracht, dass es wohl besser sei, bzw. habe ich das auch so von diversen vorlagen übernommen ohne es zu hinterfragen. danke auch für diesen tip.

beste grüße
mora
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 10.12.2012, 18:30     Titel:
  Antworten mit Zitat      
Hallo mora,

Vielen Dank für die Rückmeldung zu "clear all". Das wurde nicht nur Dir, sondern sehr sehr vielen Matlab-Anfängern so beigebracht. Offenbar geben die dies dann wieder an die nächste Generation weiter. Aber nur weil es in so vielen Beipielen zu sehen ist, ist es noch lange nicht nützlich.
Ich vermute, die Matlab-Community hat damit schon Tonnen von CO2 sinnfrei in die Luft geblasen.

"clear all" ist ein merkwürdiges Phänomen.

Gruß, Jan
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.