for n= 1:(floor(length(P{x}(:,3)))/60);
A(n,1)=sum(P{x}(j(n):j(n+1),3))/61;
[maxV]=max(P{x}(j(n):j(n+1),3));
MaxA(n)=[maxV];
[minV]=min(P{x}(j(n):j(n+1),3));
MinA(n)=[minV];
end
for n= 1:floor(length(P{x}(:,5))/60);
B(n,1)=sum(P{x}(j(n):j(n+1),5))/61;
[maxV]=max(P{x}(j(n):j(n+1),5));
MaxB(n)=[maxV];
[minV]=min(P{x}(j(n):j(n+1),5));
MinB(n)=[minV];
end
for n= 1:floor(length(P{x}(:,8))/60);
C(n,1)=sum(P{x}(j(n):j(n+1),8))/61;
[maxV]=max(P{x}(j(n):j(n+1),8));
MaxC(n)=[maxV];
[minV]=min(P{x}(j(n):j(n+1),8));
MinC(n)=[minV];
end
for n= 1:floor(length(P{x}(:,10))/60);
D(n,1)=sum(P{x}(j(n):j(n+1),10))/61;
[maxV]=max(P{x}(j(n):j(n+1),10));
MaxD(n)=[maxV];
[minV]=min(P{x}(j(n):j(n+1),10));
MinD(n)=[minV];
end
Guten Tag,
mein Code sieht zwar lang aus, ist aber nicht sehr viel, man liest damit nur Exceldateien rein und verändert diese, und gibt die veränderte wieder aus. Der Befehl für das Ausgeben ist ganz unten, xlswrite('Data(x).xlsx',Y);. Mein Problem liegt darin, dass mehrere Dateien geändert werden und ich will, dass für jede Datei ein neuer Name bekommt, Data(1) Data (2)... ,am besten so, dass es mit der Schleife for x = 1:numel(file) funktioniert. So wie der Code jetzt aussieht, werden die Ausgegebene Dateien immer in der selben Datei Data(x) überschrieben. Danke für jede Hilfe
Ein Problem ist allerdings, dass du ja geschachtelte Schleifen hast und die Datei in den inneren Iterationen ständig überschrieben wird.
Ja, dein Code ist lang. Bitte in Zukunft versuchen, den Code auf den wirklich relevanten Teil zu kürzen. Das macht die Hilfestellung deutlich leichter.
vielen Dank für deine schnelle Antwort, es klappt.
Und auch Danke für deinen Tipp, werde in Zukunft versuchen meinen Code auf das nötige zu verringern.
Verfasst am: 11.02.2016, 17:25
Titel: Re: Dateinamen mit Schleife ausgeben
Hallo yangqiao94,
Ein paar Kommentare zum Code:
path
ist eine sehr wichtige Matlab-Funktion. Sie mit einer Variable zu überschreiben kann zu extrem seltsamen Dingen führen, während des Debuggens z.B.
Automatisch eingerückter Code sieht viel übersichtlicher aus.
Die Ausdrücke "length(P{x}(:,3))" sind umständlich, da hierfür zunächst ein Vektor erstellt wird, den Du gar nicht benötigst. Einfacher und effizienter:
und dies überall einsetzt.
Die Referenzierung von "P{x}" benötigt übrigens ebenfalls Zeit. Auch hierfür einfach eine temporäre Vriable zu verwenden, räumt den Code auf:
Code:
for x = 1:numel(file)
C = xlsread([path file(x).name]);
P{x} = C;
% Und ab hier immer C verwenden...
%03d hat den Vorteil, dass die Dateien beim alphabetisch sortierten einlesen gleich auch numerisch korrekt sortiert sind.
Gruß, Jan
Einstellungen und Berechtigungen
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.