wobei in ZeitreiheMonat{1,i} für jedes i ein Zeilenvektor steht mit für jedes i unterschiedlicher Länge.
Wenn ich nun das Programm starte habe ich als Fehlermeldung:
Index exceeds matrix dimensions.
Error in daten_gesamt (line 36)
Zeitreihe(1+Anfangindex(1,i):Anfangindex(1,i)+numel(ZeitreiheMonat{1,i}),1)=ZeitreiheMonat{1,i};
Anfangindex scheint sich nicht so zu verhalten wie ich das gerne hätte. Ich hätte gerne, dass Anfangindex für jedes i jeweils eine Zahl enthält, die der Summe der Einträge in den Vektoren "ZeitreiheMonat" entspricht, so dass ZeitreiheMonat für jeden Monat untereinander"gehängt" wird.
Könntest du mal einen gekürzten Beispielvektor von 'ZeitreiheMonat' posten?
Zitat:
Anfangindex scheint sich nicht so zu verhalten wie ich das gerne hätte. Ich hätte gerne, dass Anfangindex für jedes i jeweils eine Zahl enthält, die der Summe der Einträge in den Vektoren "ZeitreiheMonat" entspricht, so dass ZeitreiheMonat für jeden Monat untereinander"gehängt" wird.
Code:
Zeitreihe =[];ZeitreiheMonat = {[1,2,3,4],[20,30,40],[100,110,120,130,140]};
Anfangindex =0;
for i = 1:length(ZeitreiheMonat)
Zeitreihe(1+Anfangindex(1,i):Anfangindex(1,i)+numel(ZeitreiheMonat{1,i}),1)=ZeitreiheMonat{1,i};
Anfangindex(1,i+1)=Anfangindex(1,i)+numel(ZeitreiheMonat{1,i}) ;
end
Macht bei mir das, was ich meine, aus deinem kryptischen Schachtelsatz entnehmen zu können. Die Vektoren werden einfach untereinander gehängt.
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
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.
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(:),'descend');
maxIndex = sortIndex(1:2); % Get a linear index into A of the 15 largest values
sortedValues = unique(B(:)); % 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
du gibst ja nur den Dateinamen an, liest die Datei aber nicht ein. Du musst die Daten dann (im Falle von .mat-Dateien) schon noch mit load importieren.
File ist ein String, und wenn du darauf Arithmetik ausführst, wird nach der ASCII-Tabelle umgewandelt.
Da der Code so bei mir nicht ausführbar ist, kann ich nur fragen: was bedeutet
Zitat:
dass das schreiben der excel nur fehlerhaft funktioniert
Wird nicht geschrieben? Das falsche? Das richtige, aber an die falsche Stelle?
Aus Performancegründen würde ich es vermeiden, xlswrite in einer Schleife zu verwenden. Stattdessen sollte man die Ausgabe in MATLAB zusammenfügen und dann mit einem Befehl schreiben.
Grüße,
Harald
P.S.: Wenn es keinen klaren Bezug zur ursprünglichen Frage gibt, bitte ein neues Thema aufmachen.
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.