|
|
Excel-Tabelle in MatLab laden und analysieren |
|
Anna9390 |
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 14.06.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.06.2018, 10:44
Titel: Excel-Tabelle in MatLab laden und analysieren
|
|
Hallo,
ich bin MatLab Anfänger und ich habe ein kleines Problem bei dem ich nicht weiterkomme. In meinem Programm importiere ich eine Excel-Datei mit drei Spalten und 35041 Zeilen mit "Import-Data" und "Generate Script". Die Variablennamen für die drei Spalten sind Zeit, a und b.
Ich möchte jetzt, dass das Programm für jede Zeile die Differenz von a und b berechnet. In einer for-Schleife mit if-Blöcken soll quasi für jede zeile etwas berechnet werden. Am Ende würde ich gerne die Summe aus dem, was in jedem Schritt berechnet wurde, haben.
Mein Programm sieht nach dem Importieren der Excel-Datei so aus:
Es kommt immer diese Fehlermeldung:
Undefined function or variable 'W_pg'.
Error in Untitled (line 47)
W_pg_ges=W_pg_ges+sum(W_pg);
Ich hoffe ihr könnt mir weiterhelfen!
Gruß, Anna
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.432
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 15.06.2018, 11:32
Titel:
|
|
Hallo,
wohl ein Tippfehler? W_pg gibt es ansonsten nicht in deinem Code, sondern nur W_gp.
Grüße,
Harald
|
|
|
Anna9390 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 14.06.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.06.2018, 11:41
Titel:
|
|
Hallo Harald,
doch W_pg gibt es auch, direkt bei ersten if-Abfrage.
Gruß, Celia
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.432
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 15.06.2018, 12:50
Titel:
|
|
Hallo,
sorry, übersehen. Bei der if-Abfrage ist aber halt dann das naheliegende, dass der Zweig noch nicht erreicht wurde, so dass es die Variable nicht gibt.
Versuch doch mal den Debugger.
Grüße,
Harald
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 15.06.2018, 15:22
Titel:
|
|
Die Variable wird nicht angelegt, wie die IF Anweisung FALSE ist. Beispiel
In dem Beispeil ist es TRUE, weil ALLE Elemente grösser Null sind. Aber in der auskommentierten Zuweisung sind auch Elemente kleiner gleich Null, also ist alles FALSE.
Bitte übrigen nicht DIFF als Variablenamen verwenden, dann kann man ja das MATLAB Kommando DIFF nicht mehr nutzen.
Andreas
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 15.06.2018, 15:24
Titel:
|
|
Vielleicht ist so eine Abfrage wie diff(Zeit) gemeint?
|
|
|
Anna9390 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 14.06.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.06.2018, 11:17
Titel:
|
|
Hallo Andreas,
stimmt, die Variable wird in manchen Fällen nicht angelegt, das habe ich jetzt geändert. Ich bekomme jetzt zwar keine Fehlermeldung mehr, aber auch nicht das Ergebnis wie es aussehen soll, ich habe das Gefühl, das Programm schickt nicht jede Zeile der Excel-Tabelle durch das Programm. Es ist richtig, dass so etwas wie diff(Zeit) abgefragt werden soll. Aber mache ich das nicht mit der Bedingung der Schleife Zeit=1:1:35040?
Danke für die Hilfe!
Gruß, Anna
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.432
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 20.06.2018, 21:57
Titel:
|
|
Hallo,
Zitat: |
Es ist richtig, dass so etwas wie diff(Zeit) abgefragt werden soll. Aber mache ich das nicht mit der Bedingung der Schleife Zeit=1:1:35040? |
Nein, denn Zeit nimmt in der Schleife immer nur einen Wert an.
Grüße,
Harald
|
|
|
Anna9390 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 14.06.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.06.2018, 08:11
Titel:
|
|
Hallo Harald,
hast du eine Idee wie es dann gehen könnte?
Gruß, Anna
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.432
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 21.06.2018, 09:13
Titel:
|
|
Hallo,
dazu müsste ich wissen, was der Code tatsächlich machen soll.
Grüße,
Harald
|
|
|
Anna9390 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 14.06.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.06.2018, 10:11
Titel:
|
|
Hallo Harald,
also mal vereinfacht gesagt soll das Programm für jede berechnete Differenz, nennen wir sie mal c (ca. 35000 Werte), verschiedene Anweisungen für die Berechnung von d ausführen. Am Ende, wenn das Programm für jede Zeile d ausgerechnet hat, möchte ich die Summe von d ausgegeben haben.
Beispiel:
Zeit=1:
if c>0
d=c*eta;
else
d=0;
d_ges=d_ges+d;
und das für Zeit von 1 bis 35.040
Ich hoffe es ist verständlich geworden, was ich überhaupt machen will.
Gruß,
Anna
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.432
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 21.06.2018, 10:14
Titel:
|
|
Hallo,
am einfachsten ist das mit logischer Indizierung
Wenn du eine for-Schleife verwendest, musst du darauf achten, konsequent den Schleifenindex zu verwenden.
Grüße,
Harald
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
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.
|
|