Hallo,
ich habe ein kleines Problem mit Matlab und hoffe, ihr könnt mir
weiterhelfen. Ich importiere eine Excel-Datei mit 2 Spalten und 35.040
Zeilen in Matlab. In der ersten Spalte steht die Zeit in
Minutenschritten, also von 1 bis 35.040. In der zweiten Spalte stehen
Messwerte. Die Überschriften der Spalten lauten Zeit und Messwert. Die
Spaltenüberschriften werden automatisch als die Variablennamen
übernommen.
Ich möchte, dass mein Programm jede Zeile durchgeht und je nach dem ob
der Messwert größer oder kleiner Null ist, verschiedene ineinander
verschachtelte Anweisungen ausführt und Berechnungen durchführt. Die
Ergebnisse der Berechnungen sollen am Ende alle miteinander addiert
werden. Hier ist mein bisheriger Quellcode:
1 | %Parameter
|
2 | eta=0.8;
|
3 |
|
4 | %Anfangswerte
|
5 | W_s=0;
|
6 | n=0;
|
7 | a_ges=0;
|
8 | W_n_ges=0;
|
9 | W_g_ges=0;
|
10 |
|
11 | %Excel-Tabelle einlesen
|
12 | data=xlsread('Daten.xlsx')
|
13 |
|
14 | %Variablennamen
|
15 | Zeit = data(:,1);
|
16 | Messwert = data(:,2);
|
17 |
|
18 | for Zeit=1:35040
|
19 | if Messwert>0
|
20 | a=Messwert*eta;
|
21 | n=n+1;
|
22 | W_g=0;
|
23 | if W_s<W_s_max
|
24 | W_s=W_s+a;
|
25 | W_n=0;
|
26 | else W_n=a;
|
27 | end
|
28 | else
|
29 | a=0;
|
30 | b=c/4;
|
31 | W_n=0;
|
32 | if W_s>0
|
33 | W_s=0;
|
34 | W_g=0;
|
35 | else W_g=b;
|
36 | end
|
37 | end
|
38 | a_ges=a_ges+a;
|
39 | W_n_ges=W_n_ges+W_n;
|
40 | W_g_ges=W_g_ges+W_g;
|
41 | end
|
Eine Fehlermeldung bekomme ich zwar nicht, aber im Workspace stehen für
die Werte a, a_ges, n, W_n und W_n_ges Nullen. Für b, W_g und W_g_ges
steht bei Value 35040x1 double. Das verstehe ich jetzt so, dass das
Programm immer in die zweite Bedingung, Messwert<=0 springt. Aber das
stimmt nicht, der Messwert ist in meiner Tabelle auch häufig positiv.
Ich habe die Excel-tabelle mit den Werten auch mal angefügt.
Hat jemand eine Idee, was ich falsch mache?
Ich hoffe jemand kann mir weiterhelfen.
Grüße, Anna