Matroids Matheplanet Forum Index
Moderiert von mire2
Mathematische Software & Apps » Matlab » Funktion mit Ausgabevariable definieren
Autor
Universität/Hochschule Funktion mit Ausgabevariable definieren
munto
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 05.05.2020
Mitteilungen: 41
  Themenstart: 2021-07-08

Hi ich habe ein Problem. ich möchte aus einer excel Datei.csv datein herausholen. und Sie in einer Variabel zb daten abspeichern. Dies sol aber über eine funktion ausgeführt werden. Ich weiß das die Syntax lautet: function [liste_ausgabeparameter] = Funktionsname(liste_eingabeparameter) wenn ich das dann so einstelle, das Daten, die ausgabevariable lautet,= funktionsname, dann speichert es es aber nicht in die defineirt var, bei ausgabeparamter ab, sondern er speichert es in die var ans, und damit kann ich nichts weiteres machen. Könnte mir evtl dazu was sagen? danke schon mal im vorraus


   Profil
rlk
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 16.03.2007
Mitteilungen: 11600
Wohnort: Wien
  Beitrag No.1, eingetragen 2021-07-08

Hallo munto, kannst Du das Programm hier aufschreiben? Das macht es einfacher, die Fehler zu finden. Eine Funktion mit einem Ausgabeparameter kannst Du so definieren: \sourceon Matlab function s = sum2(a, b) s = a + b; end \sourceoff Ein Aufruf sieht dann so aus: \sourceon Matlab ergebnis = sum2(3, 4) \sourceoff Mit mehreren Ausgabeparametern sieht es so aus: \sourceon Matlab function [s, d] = sum_diff2(a, b) s = a + b; d = a - b; end \sourceoff Bei dem Aufruf steht dann links eine in eckigen Klammern gesetzte Liste von Ergebnissen. \sourceon Matlab [es, ed] = sum_diff2(3, 4) \sourceoff Servus, Roland


   Profil
munto
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 05.05.2020
Mitteilungen: 41
  Beitrag No.2, vom Themenstarter, eingetragen 2021-07-08

Hi mein Funktion sieht so so aus. \ function [Daten]= Main Daten=readtable("Datenpad, der excel.csv datei.','ReadVariableNames',false); % Excel Tabelle wird importiert end \ function[spalte1,spalte2]= var2 spalte1=Daten{:,1}; % Speicher spalte1 spalte wird ausgelesen und in der Variable spalte1 gespeichert. spalte2=Daten{:,2}; % Speicher spalte2, spalte wird ausgelesen und in der Variable spalte2 gespeichert end Die excel datei wird erst imporriert, 2 spalten und 2 Zeilen. und dann muss ich die jeweilige spalten extra in 2 weiteren variblen abspeichertn. um damit weiter rechnen zu könen Dies solle alles in extra funktionen sein. Also main ist die import funktion, die 2, funktion ist dann die funktion wo die 2 spalten in extra 2 variablen abgespeichert wetden. nur wenn ich es verscuhen zu defineiren, dann führt er die funktion aus, er esrtellt eine variable, aber diese wird nicht extra abgespeichert, da diese nur in der Variable ans gescpiechert wird, aber diese ist ja nur ein art zwischen speicher, und keine extra variable. und wenn ich dann var2 aufrufen möchte, diese funtkion, aus diser skript datei, dann sagt mir matlab an, das er diese funktion nicht findet Fehler: >> var2 Unrecognized function or variable 'var2'. Ich habe es schon alles hinekomen , aber in extra skript datein, ohne funtkionen. aber ich möchte es lieber alles in Funktionen (Haupt/Sub) abspeichern. und ausführen möchte, in den man die funktion dierekt aus dem skript aufruft. oder geht es nicht, wie mein gedanke ist, Das ich ein art skript erstellen muss, mit allen funktionen zusammen, plus die jeweiligen funktion nochmals extra? so art Redudant.


   Profil
rlk
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 16.03.2007
Mitteilungen: 11600
Wohnort: Wien
  Beitrag No.3, eingetragen 2021-07-09

Hallo munto, für die Darstellung von Quellcode gibt es den Quelltextbereich, wenn Du \sourceon Matlab statt \fedon\mixon\ vor und \sourceoff danach schreibst, wird der Code so dargestellt wie in Beitrag 1. In Deiner Funktion Main fehlen die Eingabeparameter \sourceon Matlab function [Daten]= Main(Dateiname) Daten=readtable(Dateiname,'ReadVariableNames',false); % Excel Tabelle wird importiert end \sourceoff Auch in der Funktion var2 fehlen die Eingabeparameter, beachte dass die Variable Daten in der Funktion nicht sichtbar ist, wenn man sie nicht als Eingabeparameter definiert. \sourceon Matlab function[spalte1,spalte2]= var2(Daten) spalte1=Daten{:,1}; % Speicher spalte1 spalte wird ausgelesen und in der Variable spalte1 gespeichert. spalte2=Daten{:,2}; % Speicher spalte2, spalte wird ausgelesen und in der Variable spalte2 gespeichert end \sourceoff \quoteon(2021-07-08 23:47 - munto in Beitrag No. 2) Dies solle alles in extra funktionen sein. Also main ist die import funktion, die 2, funktion ist dann die funktion wo die 2 spalten in extra 2 variablen abgespeichert wetden. nur wenn ich es verscuhen zu defineiren, dann führt er die funktion aus, er esrtellt eine variable, aber diese wird nicht extra abgespeichert, da diese nur in der Variable ans gescpiechert wird, aber diese ist ja nur ein art zwischen speicher, und keine extra variable. \quoteoff Deine Funktionsdefinitionen sind syntaktisch falsch, weil die Eingabeparameter fehlen. Aber auch mit den richtigestellten Definitionen werden die Funktionen nicht ausgeführt, dazu musst Du sie aufrufen: \sourceon Matlab daten = Main('beispiel.csv'); [s1, s2] = var2(daten); % hier kannst Du mit s1 und s2 rechnen. \sourceoff Die Namen Main und var2 sagen nichts darüber, was diese Funktionen tun, daher wäre es gut, bessere Namen zu wählen. Servus, Roland


   Profil
munto
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 05.05.2020
Mitteilungen: 41
  Beitrag No.4, vom Themenstarter, eingetragen 2021-07-09

hI Es soll eine ui kennline aus den Daten, der excel tabele (U,I) dargestellt werden. Dann soll aus diesen Daten, die Leistung berechnet werden, und sie auch Dargestellt werden. dann folgen noch weitere Berechnungen. die aufeinander aufbauen nur die will ich alle als funktion defiineren, so das man die Funktionen einfach nur aufrufen brauucht, etc. und wenn man eine neue U I Daten Liste hat, das man sie einfach nur einführen bracuht , und das programm, aus den neuen Daten , einfach alles berchent. so ein art Automatiserung. also so? \sourceon matlab function datenui = excel('D:\mathlab p 1\Kennlinie.csv','ReadVariableNames',false); =Datenui{:,1}; % Speicher Spannungsdaten, spalte wird ausgelesen und in der Variable u1 gespeichert. [u1, s2] = var2(Datenui{:,1},Datenui{:,2}) end \sourceoff \sourceon matlab function datenui = excel('D:\mathlab p 1\Kennlinie.csv','ReadVariableNames',false); %Dies eigentlich in function 1 =Datenui{:,1}; [u1, s2] = var2(Datenui{:,1},Datenui{:,2}) %und das eigentlöich in function 2 end \sourceoff aber jetz bekomme ich diesen fehler \sourceon nameDerSprache >> excel File: excel.m Line: 1 Column: 26 Invalid expression. Check for missing multiplication operator, missing or unbalanced delimiters, or other syntax error. To construct matrices, use brackets instead of parentheses. \sourceoff wenn ich die function ausführen möchte


   Profil
rlk
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 16.03.2007
Mitteilungen: 11600
Wohnort: Wien
  Beitrag No.5, eingetragen 2021-07-10

Hallo munto, es ist nicht klar, auf welche Deiner Varianten sich die Fehlermeldung bezieht, aber es gibt mehrere Fehler. Du scheinst die Definition und die Verwendung von Funktionen zu vermischen. \quoteon(2021-07-09 23:11 - munto in Beitrag No. 4) Es soll eine ui kennline aus den Daten, der excel tabele (U,I) dargestellt werden. Dann soll aus diesen Daten, die Leistung berechnet werden, und sie auch Dargestellt werden. dann folgen noch weitere Berechnungen. die aufeinander aufbauen nur die will ich alle als funktion defiineren, so das man die Funktionen einfach nur aufrufen brauucht, etc. und wenn man eine neue U I Daten Liste hat, das man sie einfach nur einführen bracuht , und das programm, aus den neuen Daten , einfach alles berchent. so ein art Automatiserung. \quoteoff Dafür brauchst Du eine Funktion, der Du den Namen der Datei übergibst. Dazu musst Du in der Definition der Funktion einen Eingabeparameter verwenden, beim Aufruf übergibst Du dann den gewünschten Dateinamen. In der Funktion sum2 in Beitrag 1 sind a und b die Eingabeparameter (die auch als formale Parameter bezeichnet werden), bei dem Aufruf werden die Werte 3 und 4 (man spricht von aktuellen Parametern) übergeben. \sourceon matlab \numberson function datenui = excel('D:\mathlab p 1\Kennlinie.csv','ReadVariableNames',false); =Datenui{:,1}; % Speicher Spannungsdaten, spalte wird ausgelesen und in der Variable u1 gespeichert. [u1, s2] = var2(Datenui{:,1},Datenui{:,2}) end \sourceoff In Zeile 1 beginnt die Definition der Funktion excel, aber statt eines Variablennamens steht dort ein fester Dateiname. Selbst wenn das syntaktisch erlaubt wäre, könntest Du mit dieser Funktion nur diese Datei lesen, was im Widerspruch zu Deinem Plan, mehrere Dateien auszuwerten, steht. Das Semikolon in Zeile 1 gehört weg, es hat im Kopf einer Funktionsdefinition nicht zu suchen. In Zeile 2 fehlt die linke Seite der Zuweisung, rechts vom = verwendest Du die undefinierte Variable Datenui, beachte dass klein und groß geschriebene Bezeichner unterschieden werden. In Zeile 3 verwendest Du auch Datenui, und mit Datenui{:,1} und Datenui{:,2} erledigst Du schon beinahe vollständig die Aufgabe der Funktion var2. Sieh' Dir nocheinmal an, was ich in Beitrag 3 geschrieben habe. Servus, Roland


   Profil
munto hat die Antworten auf ihre/seine Frage gesehen.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]