Verfasst am: 15.02.2008, 19:12
Titel: Problem mit Vektor
Hallo, möchte in einer Schleife Monatswerte in einen Vektor mit unterschiedlicher größe schreiben.
Was kann ich tun. Hier erstmal der Quelltext bis zur Problemstelle.
Code:
% Funktion zur Darstellung der Modulgruppenerträge über ein Jahr function ModulGrErtrag(filename, savename, Pmax)
%
% Übergbewerte: % ------------- % filename -> sensor*.dat Sensordatei (dat-File mit Energiertrag der Modulgruppe z.B. sensor16.dat) % Diese Datei enthält E-total eines Strings. Damit kann % für Y_A,m = E_A,m /P_0 die E_A,m Energie berechnet werden. % savename -> sensor*.mat Sicherung der Sensordatei in mat-Format % Pmax -> maximale Modulgruppenpleistung
%
% Sch, Bär, 28.10.07 format long;
% Laden und Einlesen der Datei in temporärer Variable
fid = fopen(filename);
Tmp = textscan(fid,'%10n %19c %f', 'Whitespace' );
fclose(fid);
% Sichern der Daten in Datenstrucktur
ID = Tmp{1,1};
fDate = Tmp{1,2};
% Konvertierung des Datums in eine Serielle Zahl Date = datenum(fDate,'dd.mm.yyyy HH:MM:SS');
%Time = Tmp(1,3);
Value = Tmp{1,3};
% Sichern der Datenstrucktur in *.mat - File
savefile = savename;
save(savefile, 'ID', 'Date', 'Value')
% Laden der Sensordaten
sensorStr = load(savename);
% Entfernen überflüssiger Variablen clear fid Tmp ID Value savename filename ans savefile Date fDate;
% Kontrolle auf Ungültige Werte
BoolVektor = sensorStr.Value > 0;
CheckedValueVektor = sensorStr.Value(BoolVektor);
CheckedDateVektor = sensorStr.Date(BoolVektor);
%--------------------------Filterung der monatlichen Werte--------------------------
% Vorteil nun, ist dass E-total schon für jeden String im Datensatz z.B. % sensor16.dat vorhanden ist somit nicht extra berechnet werden muss. % Daher kann der Monatsertrag der Energie, durch % letzter Energiewert - erster Energiewert berechnet werden. Das Ergebniss ist E_A,m
Wie man sieht, ist im Vektor Monatsertrag kein Wert speicherbar. Warum, Weiteres Problem, CheckedDateVektor kann durch den BoolVektor eine variable länge erhalten. Dennoch möchte ich die Werte sichern. Geht das auch über eine Strucktur von 12(Monate)? Wenn ja, wie?
Bitte um Hilfe. Den derzeit erhalte ich nur die Fehlermeldung:
??? In an assignment A(I) = B, the number of elements in B and
I must be the same.
Error in ==> ModulGrErtrag at 53
Monatsertrag(i) = CheckedDateVektor(BoolVektor);
wenn CheckedDateVektor(BoolVektor) unterschiedlich groß lange Arrays liefert. Es sein denn du bist dir immer sicher, dass immer gleich große Arrays rauskommen, da kannst so lassen.
Wie du die Nullwerte wegkriegst musst du wohl selbst rausfinden
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.