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

Mat-File an Klasse übergeben

 

Matlabneuling123456

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.08.2011, 10: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: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 03.08.2011, 21: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, 10: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



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.