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

For-Schleife zählt nicht bis zum Ende - viele Messdaten

 

Skatze
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.10.14
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 18.03.2015, 12:24     Titel: For-Schleife zählt nicht bis zum Ende - viele Messdaten
  Antworten mit Zitat      
Hallo,
da ich noch ein Anfänger in Sachen Matlab bin, ist es schwierig das Probelm zu beschreiben.

Ich möchte gerne eine Leistungsberechnung machen. Hier der Code mit Kommentaren:

Code:
%Leistungsberechnung aus Winddaten

load('Windgeschwindigkeit.csv') % Windgeschwindigkeit (Quelle: DWD)
load('Enercon_2MW.csv')         % Leistungskurve Enercon_E70

x = 0:1:24;            
xq = 0:0.1:24;
P_Interp = interp1(x,Enercon_2MW,xq);   % Interpolation der Werte
P_Interp = round(P_Interp.*100)/100;    

A = zeros(8760,1);
P_final = zeros(8760,1);

% Suchalgorythmus um den interpolierten Leistungen den entsprechenden
% Windgeschwindigkeiten zuzuordnen.
for i = 1:1:length(Windgeschwindigkeit(:,1))
    A(i,1) = find(P_Interp(:,1) == Windgeschwindigkeit(i,1));
    P_final(i,1) = P_Interp(A(i,1),2);
end
 


Es handelt sich um die berechnung in Stundenwerten im gesamten Jahr. Meine Datei "Windgeschwindigkeiten.csv" enthalten auch 8760 Werte und bei Eingabe im Command-Fenster des Befehls "length(Windgeschwindigkeit(:,1))" erhalte ich auch "ans = 8760".

Nun ist mein Problem, dass mein "i" in der For-Schleife nur bis 1420 zählt und nicht weiter.. Ist das ein Speicherproblem oder woran kann das liegen, ich bekomme es einfach nicht gelöst..?!

Gruß, Skatze
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.03.2015, 15:17     Titel:
  Antworten mit Zitat      
Hallo,

kannst du bitte auch Beispieldaten zur Verfügung stellen? Ansonsten ist das schwierig zu beantworten.
Speicherprobleme wären jedenfalls sehr überraschend, und es würde mich sehr wundern, wenn die Schleife ohne Fehlermeldung nicht zu Ende ausgeführt wird.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.10.14
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 18.03.2015, 15:28     Titel:
  Antworten mit Zitat      
Hi Harald, na klar, sehr gerne!

Ausschnitt 'Windgeschwindigkeiten.csv.' als 8760x1 double:

Code:
9,20000000000000
9,30000000000000
9,50000000000000
9,70000000000000
10,6000000000000
10,6000000000000
9,50000000000000
10
9,80000000000000


Ausschnitt 'Enercon_2MW.csv.' als 25x2 double:

Hier ist die erste Spalte die Windgeschwindigkeit in 'm/s' und die zweite Spalte die entsprechend generierte Leistung. Da meine Winddaten aber auch in Form von '9,5m/s' vorliegen, habe ich die Werte interpoliert um sie dann den Leistungen aus 'Windgeschwindigkeiten.csv' zuordnen zu können.

Code:
1   0
2   2
3   18
4   56
5   127
.
.
.
25
 


Folgende Fehlermeldung erhalte ich:
Code:
Subscripted assignment dimension mismatch.

Error in Leistungsberechnung (line 22)
    A(i,1) = find(P_Interp(:,1) == Windgeschwindigkeit(i,1));
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.03.2015, 16:06     Titel:
  Antworten mit Zitat      
Hallo,

bitte hänge das doch als Dateien an, ggf. gezippt. Das macht es deutlich einfacher.
Wie soll man zudem nachvollziehen, welches Problem bei i=1420 auftritt, wenn du nur eine Handvoll Zeilen zur Verfügung stellst?

Die Fehlermeldung dürfte daher rühren, dass Windgeschwindigkeiten entweder nicht oder mehrfach gefunden werden. Der Debugger dürfte da weiterhelfen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 09.10.14
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 18.03.2015, 16:53     Titel:
  Antworten mit Zitat      
Hey Haral,

ich hab den Fehlerteufel gefunden. Es liegt an Werten, die mit einer 0 beginnen. Sprich bei Zeile 1420 ist der Wert 0,9 vorhanden. In meiner Leistungskurve der Enercon_2MW beginne ich bei 1m/s und interpoliere dementsprechend von diesem Punkt aus, sodass er natürlich bei einem Vergleich später eine 0,9 oder 0,6 usw. nicht finden kann..

Damit ist das Problem vehoben und trotzdem vielen Dank für die Aufmerksamkeit Smile


Beste Grüße!
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.