|
Autor |
Funktion mit Ausgabevariable definieren |
|
munto
Ehemals Aktiv  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  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  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  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  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  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. |
|
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]
|