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

Hilfe mit evalin

 

david90
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 30.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2018, 09:46     Titel: Hilfe mit evalin
  Antworten mit Zitat      
Hallo zusammen,

die Matlab-Hilfe bringt mich nicht wirklich weiter bei der Verwendung mit evalin.
Wenn ich also den folgenden Ausdruck verwende:

Code:
x=evalin('base','test');


wie muss ich dann "test" definieren? Wenn ich vorher z.B. schreibe:
Code:
test=[1 2 3 4 5 6 7 8 9];


bekomme ich die Fehlermeldung "Undefined function or variable test".
Kann mir jemand helfen?

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


Blade
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 11.07.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2018, 10:14     Titel:
  Antworten mit Zitat      
Hallo David90,

ehrlich gesagt versteh ich nicht ganz was du mit x=evalin.. bewirken willst?!
willst du den test aus einer funktion rausschreiben oder was genau willst du machen?

wenn du test nur in den allgemeinen wokrspace schreiben willst lass einfach das x= weg.
allerdings würde ich dir, wenn du werte zwischen funktionen übergeben willst, raten mit handels zu arbeiten.
wenn du x=test machen willst dann lass einfach evalin weg.

ich hoffe das hilft schon, wenn nicht schreib bitte nochmal eine Erklärung was genau du suchst.

Grüße, Blade
Private Nachricht senden Benutzer-Profile anzeigen
 
david90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 30.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2018, 10:44     Titel:
  Antworten mit Zitat      



Dieser Artikel existiert nicht oder nicht mehr auf dem Amazon-Server.
Hallo Blade.

Also hier noch mehr von dem Code, den ich zu verstehen versuche:

Hauptprogramm:
Code:
n=100;

for i=1:n
    FitFct=@Testfunktion;
    %mach irgendwas
end


Und hier die Funktion:
Code:
function [ Rueckgabe ] = Testfunktion(Alpha)

Spalt=evalin('base','test1');
rel_Spalt=evalin('base','test2');

wert= (Alpha(1)*rel_Spalt(:,1) +Alpha(2)*rel_Spalt(:,2) -Spalt(:)).^2;
Rueckgabe=sum(wert);

end


Jetzt muss ich also test1 und test2 definieren. Die Daten liegen in Textdateien vor: test1.txt und test2.txt.
Wie mache ich das jetzt am besten mit evelin?

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Blade
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 11.07.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2018, 12:02     Titel:
  Antworten mit Zitat      
Hallo,
also ich hoffe ich habe es jetzt richtig verstanden Wink

also du musst den txt einfach einlesen bevor du den Spalt und rel_Spalt bestimmst und damit dann dein test1 und test 2 festelegen.
einlesen kannst du einfach mit txtread und txtscan.
(allerdings versteh ich nicht was genau du damit erreichen willst erst einlesen und dann mit evalin unter einem neuen Namen speichern.)
schau hierzu vielleicht den link
https://www.gomatlab.de/werte-aus-txt-auslesen-t21137.html
an hier wurde es gut durchgesprochen.
Das einlesen kannst du jetzt in der Funktion, allerdings liest er dann in der for schleife 100 mal ein und überspeichert.
du kannst es aber auch vor der for schleife machen.

Außerdem so wie ich das sehe macht deine for schleife gerade noch gar nichts weil nirgends dein i verwendet wird.

Ich hoffe ich konnte soweit helfen,

Grüße Blade
Private Nachricht senden Benutzer-Profile anzeigen
 
david90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 30.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2018, 14:19     Titel:
  Antworten mit Zitat      
Ok, danke für die Hilfe.
Wenn ich aber trotzdem in der Funktion mit evelin einlesen möchte, wie müsste der Code dann aussehen? Muss ich dafür wirklich textread/textscan verwenden?
Wieso geht nicht folgendes:

Code:
Spalt=evalin('base','test1.txt');


oder bei einer .dat-Datei:

Code:
Spalt=evalin('base','test1.dat');


wenn sich Hauptprogramm, Funktion und Dateien im gleichen Ordner befinden bzw. wie müsste es richtig heißen?

VG
Private Nachricht senden Benutzer-Profile anzeigen
 
DerElch
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 18.07.18
Wohnort: Wien
Version: 2017b
     Beitrag Verfasst am: 31.07.2018, 16:23     Titel:
  Antworten mit Zitat      
Weil test1.txt nur eine ASCII Datei ist. Die musst du vorher in passende Matlab Format einlesen mit textread / csvread / readtable ....
Private Nachricht senden Benutzer-Profile anzeigen
 
david90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 30.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2018, 17:23     Titel:
  Antworten mit Zitat      
Ok, aber kann mir jemand sagen, wie die Codezeile mit evalin dazu aussieht?

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.07.2018, 21:39     Titel:
  Antworten mit Zitat      
Hallo,

dazu müssten wir wissen, was die evalin-Zeile machen soll.
Eine Textdatei einlesen wird evalin generell nicht.

evalin ist fast immer unnötig und verursacht mehr Probleme als es löst. Ein deutlich angenehmerer Ansatz ist meist anonymous function handles.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
david90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 30.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.08.2018, 08:20     Titel:
  Antworten mit Zitat      
Naja ich möchte die Daten der Dateien test1.dat und test2.dat in der Funktion ins workspace laden. Wenn ich das gerade so aufschreibe, kommt mir der Gedanke die Dateien einfach mit
Code:
load 'test1.dat'
load 'test2.dat'

zu machen. Evalin ist in dem Sinne ja wirklich unnötig.

VG
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.08.2018, 16:23     Titel:
  Antworten mit Zitat      
Hallo,

genau. Bzw. je nach Datenformat brauchst du eine andere Funktion statt load, z.B. readtable oder textscan, dlmread, etc.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 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.