String in Funktion umwandeln < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 11:35 Di 05.12.2006 | Autor: | JParis |
Hallo,
kann jemand bitte mir sagen wie man ein vorgebener String in funktion mit Matlab umwandeln kann.
str1 = ' [mm] x^2 [/mm] + 3*x + 4 ';
str2 = ' exp(2*x+3) ' ;
ich möchte str1 und str2 in funktionen f1(x) und f2(x) umwandeln
for x = 1:10
f1(x) = [mm] x^2 [/mm] + 3*x + 4;
f2(x) = exp(2*x+3) ;
end;
Danke für jede Hilfe.
JParis
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo,
es ist nicht direkt ein Umwandeln sondern ein Auswerten und funktioniert ber eval. Also muss in der Schleife stehen:
f1(x) = eval(str1);
f2(x) = eval(str2);
Gruss
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:35 Mi 06.12.2006 | Autor: | JParis |
Hallo Martin ,
danke es klappt super
Gruß
JParis
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 17:29 Do 07.12.2006 | Autor: | JParis |
Hallo ,
ist es möglich ein String in irgendwelchem Abstand in Funktion umzuwandelt ?
z. B
str = [mm] 'x^2-3*x+5*sin(x)+5';
[/mm]
for x = -50:0.2:50
f(x) = eval(str);
end
Mit dieser for-schleife geht es nicht da man positiven index benutzen muss,
weiss bitte jemand wie man das Problem lösen kann.
Danke
JParis
|
|
|
|
|
Hallo JParis,
hau mich nicht, wenns nicht klappt, denn ich habe von Matlab nicht die geringste Ahnung.
Aber was hältst du von:
>
> str = 'x^2-3*x+5*sin(x)+5';
>
>
for i = 0:0.2:100
x= i - 50;
> f(x) = eval(str);
>
> end
Auf diese Weise umgehst du auf jeden Fall die negative Indexvariable in der Schleife
Gruß Karthagoras
|
|
|
|
|
Status: |
(Korrektur) fundamentaler Fehler | Datum: | 19:19 Do 07.12.2006 | Autor: | Martin243 |
Hallo,
der negative Wert der Schleifenvariablen ist nicht das Problem. Dein Lösungsvorschlag funktioniert auch nicht. Deine Lösung führt zu gebrochenen Indizes.
Aber es schlägt dich keiner...
Gruß
Martin
|
|
|
|
|
Hallo,
man darf als Indizes weder negative noch gebrochene Zahlen benutzen!
Also müsste dein Programm korrekt so aussehen:
x1 = -50:0.2:50;
for i=1:length(x1),
x=x1(i);
f(i)=eval(str);
end;
Übrigens kannst du die Berechnung des gesamten f-Vektors abkürzen, wenn du dem Potenzzeichen einen Punkt voranstellst. Dann sieht es so aus:
str = 'x.^2-3*x+5*sin(x)+5';
f = eval(str);
In beiden Fällen ist f dann ein Vektor mit den Indizes 1 bis 501. Also Vorsicht beim Zugriff! f(5) ist nicht der Funktionswert von 5, sondern der Funktionswert des 5. Elements des Vektors -50:0.2:50, also -49.2.
Gruß
Martin
|
|
|
|