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

Funktion über eine Schleife mehrmals durchführen

 

boulala
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2015, 16:56     Titel: Funktion über eine Schleife mehrmals durchführen
  Antworten mit Zitat      
Hi Leute,

ich als blutiger Anfänger stehe heftig auf dem Schlauch. Zu meinem Problem:

1. Ich lese Daten aus Excel ein. Alle Parameter die für meine Funktion benötigt werden stehen dabei in einer Zeile. Die erste Spalte enthält ein Datum.
2. Ich möchte jetzt folgendes damit machen: Meine Funktion soll die Daten aus der ersten Zeile nehmen, rechnen und das Ergebnis in einer Datei ausspucken.
Dann soll sie die zweite Zeile nehmen und dasselbe machen. Das alles bis wir am Ende der Inputdatei angekommen sind. Die Ergebnisdatei soll dann in der ersten Spalte das Datum anzeigen und rechts daneben das Ergebnis.

Der Einfachheit halber ist die Funktion=a+b+c+d+e und die Inputdatei ebenso A1=Datum B1=2 C1=2 D1=2 E1=2 F1=2. Die Inputdatei erstreckt sich über 5 Zeilen.

Wie kann man das lösen?

Viele Grüße
boulala
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.03.2015, 12:01     Titel: Re: Funktion über eine Schleife mehrmals durchführen
  Antworten mit Zitat      
Hallo boulala,

Bitte poste den Code, mit dem Du es bisher versucht hast und beschreibe die autretenden Probleme. Die bisherige Beschreibung ist zu vage, um effizient zu antworten. Es ist immer einfacher konkrete Fragen zu beantworten als Ratschläge für vereinfachte Aufgabenbeschreibung zu geben.

Zitat:
Meine Funktion soll die Daten aus der ersten Zeile nehmen, rechnen und das Ergebnis in einer Datei ausspucken.

Ist das Excel-File bereits importiert?
In welches Datei-Format sollen die Ergebnisse ausgegeben werden?

Zitat:
Der Einfachheit halber ist die Funktion=a+b+c+d+e und die Inputdatei ebenso A1=Datum B1=2 C1=2 D1=2 E1=2 F1=2.

Das verstehe ich noch nicht.

Wahrscheinlich: Daten per XLSREAD einlesen, die Berechnungen mit den Spalten machen - ein zeilenweises bearbeiten bringt keine Vorteile, danach kommt die Ausgabe in das File in dem von Dir gewünschten Format. Konkreter können die Ideen werden, wenn Du die Fragen konkreter stellst.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
boulala
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.03.2015, 23:02     Titel:
  Antworten mit Zitat      
Hi,

ok hier kommt das Monster, welches eine Schleife braucht.
Es sind mehrere Funktionen in der RAR Datei, da MeineFunktion.m auf diese alle zugreift.

Es geht also nur um MeineFunktion.m:
In der Datei MeineFunktion.m sind 2 Varianten. Einmal das original welches so auch funktioniert. Drunter auskommentiert mein Versuche eine Schleife zu bauen.
Mir geht es um folgendes. Ich möchte die komplette test.xlsx einlesen, d.h. 2 Zeilen mit Daten. Für jede Berechnung wird nur eine Zeile benötigt, denn alles was nötig ist, ist in einer Zeile (ich habe die Daten so angeordnet da ich dachte es wäre so übersichtlicher oder einfacher für Matlab).

Wenn man das original startet sieht man auch wie das Ergebnis aussieht. Ich möchte jetzt, dass Matlab die Daten aus Zeile 1 nimmt alles berechnet und danach Zeile 2 nimmt und alles berechnet usw. bis Zeile N.
Das bedeutet demnach auch, dass ich pro Zeile andere Ergebnisse haben werde. Diese sollen alle (für jede Zeile) in einer Datei gespeichert werden. Format am liebsten eins von Excel aber alles andere passt auch.

Meine Schleife ist fehlerhaft und ich weiß leider nicht an welcher Stelle. Vielleicht einer von euch?

PS: Ja der Code wurde nicht von mir entworfen. Ja ich darf ihn benutzen. Aus diesem Grund wollte ich ihn etwas automatisieren Wink

Viele Grüße
boulala

Funktion Schleife.rar
 Beschreibung:

Download
 Dateiname:  Funktion Schleife.rar
 Dateigröße:  19.09 KB
 Heruntergeladen:  313 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.03.2015, 13:24     Titel:
  Antworten mit Zitat      
Hallo boulala,

Zitat:
Meine Schleife ist fehlerhaft und ich weiß leider nicht an welcher Stelle.

Bitte erkläre genau, wieso Du meinst, dass der Code fehlerhaft ist. Bekommst Du eine Fehlermeldung oder stimmt das Ergebnis nicht mit Deinen Erwartungen überein.

Es ist immer leichter zu helfen, wenn man nicht erst das Problem erraten muss.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
boulala
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2015, 15:43     Titel:
  Antworten mit Zitat      
Ach sorry. Ja die Schleife die funktioniert nicht und die Berechnung bricht ab mit der Meldung

Code:
In an assignment  A(I) = B, the number of elements in B and I must be the same.

Error in MeineFunktion (line 38)
    [v01w(counter),vv1w(counter),kappa1w(counter),theta1w(counter),rho1w(counter),IV1w(counter),SSE1w(counter)] =...


Wenn meine Datenbasis nur aus einer Zeile besteht funktioniert der Code. Aber sobald ich über die Schleife eine Zeile nach der anderen berechnen will taucht dieser Fehler auf.

Der Hintergrund zur Datenbasis. Eine Zeile stellt einen Tag dar. Für jeden Tag soll eine seperate Berechnung stattfinden, damit ich nicht händisch jeden Tag da reinladen muss, wollte ich eine Schleife haben die das macht.
Und die Ergebnisse pro Zeile, sollen auch in einer seperaten Datei gespeichert werden. Angenommen es gibt 10 Zeilen die seperat berechnet werden sollen, so soll am Ende nur eine "Ergebnisdatei" entstehen mit 10 Zeilen an Ergebnissen.

Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.03.2015, 12:13     Titel:
  Antworten mit Zitat      
Hallo boulala,

Zitat:
Code:
In an assignment  A(I) = B, the number of elements in B and I must be the same.
Error in MeineFunktion (line 38)
[v01w(counter),vv1w(counter),kappa1w(counter),theta1w(counter),rho1w(counter),IV1w(counter),SSE1w(counter)] =...

Das Problem liegt in dem Teil, den Du hier mit "..." abgeschnitten hast.

Für eine Antwort wird der relevante Code-Abschnitt benötigt. Wie soll man sonst einen Verbesserungsvorschlag machen?

Viele Grüße, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
boulala
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.03.2015, 18:31     Titel:
  Antworten mit Zitat      
Hi Jan,

ich hatte tatsächlich nur ein Problem mit den Indizes in meiner Schleife. Die standen an einer falschen Stelle. Es läuft jetzt.

Ich danke dir trotzdem, dass du es dir angeschaut hast.

PS: Die Funktion habe ich nicht abgeschnitten, aber die Fehlermeldung sah genau so abgeschnitten aus. Tut jetzt nichts mehr zur Sache aber so war es Wink

Viele Grüße
boulala
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.