goMatlab - Mein MATLAB Forum

Mein MATLAB Forum

 
Login  | Registrieren
Bücher:

MATLAB 7 für Ingenieure: Grundlagen und Programmierbeispiele

Fachkräfte:
Softwareentwickler MATLAB/Simulink (w/m)
Erarbeitung von Lösungen im Bereich der Schnittstelle zum Simulink-Modell und der Benutzeroberfläche von TargetLink
dSPACE GmbH - Paderborn

Testingenieur (w/m) Testframework für Simulink-basierte Echtzeitanwendungen
Pflege des MATLAB/Simulink-Testframeworks, Spezifizieren von Testkriterien, Testfällen und Testszenarien
dSPACE GmbH - Paderborn

Testingenieur (w/m) Konfigurationswerkzeuge für Echtzeitsysteme
Einbinden von Simulink®-Simulationsmodellen, Verteilung der Simulationsmodelle auf Multicore- und Multiprozessorsysteme
dSPACE GmbH - Paderborn

Entwicklungsingenieur/in Vorentwicklung Elektronik & Regelungssysteme
Erarbeitung individueller Schaltungskonzepte
Behr GmbH & Co. KG - Stuttgart

Systemingenieur/in für Elektronische Selbstschutzmaßnahmen von Luftfahrzeugen
Analyse und Definition von Arbeitsabläufen, Erstellung technischer Spezifikationen
ESG Elektroniksystem- und Logistik-GmbH - Fürstenfeldbruck (Reisebereitschaft)

weitere Angebote

Partner:




Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Mat-File an Klasse übergeben

 

Matlabneuling123456
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.08.2011, 11:37     Titel: Mat-File an Klasse übergeben
  Antworten mit Zitat      
Hallo zusammen,


ich bin recht neu in der Matlabwelt. Wie an dem Titel zu erkennen möchte ich mein Matfile an eine Klasse übergeben.

So sieht mein Code für meine Funktion aus:
Code:

% zuerst die Funktion in der ich meine Klasse benutzen möchte
function testfunction (fileName) %dataFileName ist mein *.mat File
testclass = test; % es gibt eine Klasse namens test
testclass.dataFileName = fileName;
testclass.loadData;
testclass.setSignal;
testclass % einfache ausgabe um zu schauen was passiert ist
end
 


dann mein Code für die entsprechende Klasse:
Code:

classdef test
    %UNTITLED Summary of this class goes here
    %   Detailed explanation goes here
   
    properties
        Signal;    
        dataFileName;  
    end
   
    methods(Static)
        function loadData
            evalin('base','load(dataFileName)');      
        end
       
        function setSignal                          
            if exist('SignalInMatFile','var');
                Signal = SignalInMatFile(:,2);
            end                              
        end        
    end    
end
 


In Matlab gebe ich dann z.Bsp. folgendes ein:

testfunction('meinMatFile.mat');

als Fehlernachricht bekomme ich:
??? Error using ==> evalin
Undefined function or variable 'dataFileName'.

Ich habe es auch mit der load Funktion probiert aber es funktioniert nicht.
Es wäre echt cool wenn mir jemand helfen könnte.

Beste Grüße
Matlabneuling


Marco H.
Forum-Guru
Forum-Guru

Beiträge: 337
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2010b
     Beitrag Verfasst am: 03.08.2011, 22:59     Titel:
  Antworten mit Zitat      
Hey,
evalin macht das Programm nur unnötig Unübersichtlich. Da ich nicht weiß was du mit deinen Daten machen willst, wie sie aussehen und welche du benötigst habe ich dir ein kleines Beispiel geschrieben wie ich es machen würde...

Code:

classdef test < handle
    %UNTITLED Summary of this class goes here
    %   Detailed explanation goes here
   
    properties
        Signal;    
        dataFileName;
    end
   
    methods
        function obj = test(file) % constructor
            if nargin == 1
                obj.dataFileName = file;
            end
        end
       
        function loadData(obj)
            load(obj.dataFileName); % daten in Function Workspace laden
            if exist('SignalInMatFile','var')
                obj.Signal = SignalInMatFile(:,2);
            end
        end
    end    
end
 

Aufrufen kannst du dies mit
Code:

d = test('DeinMatFile.mat');
% oder
d = test; % Propertie dataFileName wird noch nicht gesetzt
% Methode
loadData(d)
% oder
d.loadData
 


MfG Marco
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlabneuling123456
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2011, 11:12     Titel: gelöst
  Antworten mit Zitat      
Marco H. hat Folgendes geschrieben:
Hey,
evalin macht das Programm nur unnötig Unübersichtlich. Da ich nicht weiß was du mit deinen Daten machen willst, wie sie aussehen und welche du benötigst habe ich dir ein kleines Beispiel geschrieben wie ich es machen würde...

[/code]
Aufrufen kannst du dies mit
Code:

d = test('DeinMatFile.mat');
% oder
d = test; % Propertie dataFileName wird noch nicht gesetzt
% Methode
loadData(d)
% oder
d.loadData
 


MfG Marco


Hallo Marco,

ich habe das Problem anders gelöst.

Code:

 %meine Funktion die die Klasse aufruft

function callClass(dataFileName)

test = testclass;
testclass.dataFileName = dataFileName; % Klasse besitzt propertie mit Namen dataFileName
testclass = testclass.run;

 %meine Klasse seht dann wie folgt aus

classdef testclass
  properties
    dataFileName;
    a=0;
  end

  methods
    function t =  run(t)
      load(dataFileName);
      a=eineVariableAusMeinemMatFile;
    end
  end
 


Mein Problem war also die Existenz meiner Variablen aus dem Mat-File.

Trotzdem besten Dank für die Antwort.

Grüße
Matlabneuling
 
Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2012 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.