Dieses Funktion habe ich mit einer kombination aus if, for und switch/case-Funktion gelöst.
Nun habe ich jedoch folgendes Problem. Wenn der Ordner zB. mit 125 Files gefüllt ist und er auf das
Intervall (1 50 150 200 250) zurückgreift kommt logischerweise die Fehlermeldung das er die Datei 150 nicht findet und bricht das Programm ab.
(Fehler: Index exceeds matrix dimensions.
Error in Auswahl_Datein (line 74)
[pathstr, name, ext] = fileparts([path file(M1(z,1)).name]); %Fileinformationen
Habt ihr eine Idee wie ich Abfragen kann:
"Nehm alle Files die den Intervall zugeordnet sind und wenn eines nicht exsistiert nehm die letzte Datei im Ordner".
Mein Vorschlag wäre über die Variable "Anzahl_Werte" (wieoft die Schleife durchlaufen wird) vorher abzufragen wieviele Elemente der Fileanzahl mit den Intervall übereinstimmen.
z = 1; % Zähler Variable für Zeile der Matrix
t = 0; % Variable für Switch-Funktion
%% Fall 1 Standzeit bis 000-100 if h <= 100
t=1;
end;
%% Fall 2 Standzeit 101-250 if h >100 && h<=250
t=2;
end;
%% Fall 3 Standzeit 251-500 if h >250 && h<=500
t=3;
end;
%% Fall 4 Standzeit 500-1000 if h >500 && h<=1000
t=4;
end;
%% Fall 5 Standzeit 1001-2000 if h >1000 && h<=2000
t=5;
end;
%% Ablauf-Schleife für t - Standzeit switch(t) case1% Standzeit 0-100
Anzahl_Werte = 6 ;
for k = 1:(Anzahl_Werte)% Für Anzahl an Elementen im Intervall [pathstr, name, ext] = fileparts([path file(M1(z,1)).name]); % Fileinformationen ifstrcmp(ext,'.xlsx') || strcmp(ext,'.xls')% ist die aktuelle file eine Excel-File?, wenn ja-->File einlesen [nums, txt] = xlsread([path file(M1(z,1)).name]);
% auf Spalten zugreifen >>> Auswertung der Excelfiles
fz = nums(:,2); % Axialkraft in [N] korregiert
mt = nums(:,3); % Drehmoment in [Nm] korregiert
MT =[MT mt((6:laenge),1)]; % alle Drehmomente in einer Matrix
FZ =[FZ fz((6:laenge),1)]; % alle Axialkräfte in einer Matrix
maxfz = max(fz);
minfz = min(fz);
maxmt = max(mt);
minmt = min(mt);
maxFZ = [maxFZ ; maxfz];
minFZ = [minFZ ; minfz];
maxMT = [maxMT ; maxmt];
minMT = [minMT ; minmt];
all_name(z,1) = {name}; % alle Namen für Legende
str1=sprintf('Die Datei Nummer %d wird bearbeitet.',M1(z,1));
disp(str1);
Ich hoffe mein Problem ist verständlich beschrieben. Falls fragen aufkommen bitte melden. Ansonsten wäre ich euch dankbar wenn Ihr mir weiterhelfen könntet.
%% Fall 1 Standzeit bis 000-100 if h <= 100
t=1;
X=M1;
end;
%% Fall 2 Standzeit 101-250 if h >100 && h<=250
t=2;
X=M2;
end;
%% Fall 3 Standzeit 251-500 if h >250 && h<=500
t=3;
X=M3;
end;
%% Fall 4 Standzeit 500-1000 if h >500 && h<=1000
t=4;
X=M4;
end;
%% Fall 5 Standzeit 1001-2000 if h >1000 && h<=2000
t=5;
X=M5;
end;
%% Fall 6 Standzeit 2001-5000 if h >2000 && h<=5000
t=6;
X=M6;
end;
%% Fall 7 Standzeit 5001-10000 if h >5000 && h<=10000
t=7;
X=M7;
end;
%% Berechnung der Anzahl an Übereinstimmungen
Datei_Anzahl=1:1:h; % Anzahl der Excel-Datein im Ordner, aufgelistet als Zeilenvektor
w=1; %Zähler
for q = 1:h
Uebereinstimmungen(w,1)= any((Datei_Anzahl(1,(w)))==X); % Anzahl wieoft stimmt das Intervall überein
w=w+1;
D = sum(Uebereinstimmungen); % Summe der Übereinstimmungen
%% Ablauf-Schleife für t - Standzeit und D Übereinstimmungen
for k = 1% für alle Übereinstimmungen [pathstr, name, ext] = fileparts([path file(X(z,1)).name]); % Fileinformationen ifstrcmp(ext,'.xlsx') || strcmp(ext,'.xls')% ist die aktuelle file eine Excel-File?, wenn ja-->File einlesen [nums, txt] = xlsread([path file(X(z,1)).name]);
% auf Spalten zugreifen
fz = nums(:,2); % Axialkraft in [N] korregiert
mt = nums(:,3); % Drehmoment in [Nm] korregiert
MT =[MT mt((6:laenge),1)]; % alle Drehmomente in einer Matrix
FZ =[FZ fz((6:laenge),1)]; % alle Axialkräfte in einer Matrix
maxfz = max(fz);
minfz = min(fz);
maxmt = max(mt);
minmt = min(mt);
maxFZ = [maxFZ ; maxfz];
minFZ = [minFZ ; minfz];
maxMT = [maxMT ; maxmt];
minMT = [minMT ; minmt];
all_name(z,1) = {name}; % alle Namen für Legende
str1=sprintf('Die Datei Nummer %d wird bearbeitet.',X(z,1));
disp(str1);
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.