Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
Softwareentwickler (m/w) für automatische Codegenerierung
Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink im Bereich Fahrwerkregelsysteme
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Entwicklungsingenieur (m/w) für modellbasierte Softwareentwicklung
Modellbasierte Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Softwareentwickler (w/m) Bypassing- und Steuergeräte-Schnittstellen
Entwicklung von Echtzeit-Software für verschiedene automotive Microcontroller
dSPACE GmbH - Paderborn

Test- und Erprobungsingenieur (m/w)
Erstellung von Testspezifikationen (z. B. in Doors) für Kundenfunktionen
Automotive Safety Technologies GmbH - Ingolstadt

Elektromobilität: E-Drive Entwicklungsingenieur HV-Energiemanagement und Betriebsstrategie (m/w)
Entwicklung von Teilfunktionen für Energiebordnetze
MBtech Group GmbH & Co. KGaA - Sindelfingen

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

dynamische Properties überprüfen und an Funktion übergeben

 

Anfänger 2.0
Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 17.10.13
Wohnort: kreis Karlsruhe
Version: ---
     Beitrag Verfasst am: 10.08.2015, 10:55     Titel: dynamische Properties überprüfen und an Funktion übergeben
  Antworten mit Zitat      
Hi Leute, der Anfänger mal wieder hier Very Happy

Folgendes Problem:

gibt es die Möglichkeit in einer Klasse alle vorhandenen properties anzugeben?
Ich möchte diese in einer Schleife auf isempty() überprüfen. Das Problem hierbei ist, dass die Klasse dynamicprops hat. Sprich ich kann keine statische Abfrage machen.
Code:

% sei properties ein cellarray mit den property namen als string
for pointer = 1:1:length(properties)
    if ~isempty(obj.(properties{pointer}))
%
    end
end
 


desweiteren möchte ich anschließend eine Funktion aufrufen, wobei ich die nicht leeren properties übergeben muss.
Code:

tutetwas(propName1, obj.(propName1)); % für alle nichtleeren props
 

Gibt es eine Möglichkeit diesen Aufruf dynamisch zu gestalten?
Ohne ein cellarray zu übergeben, welches in der Funktion dann aufgebröselt werden muss?

So ist die aufzurufende Funktion aufgebaut
Code:

funktion tutetwas(varargin)
%% die parameter werden in folgender form als string übergeben
% paramName1, paramWert1, paramName2, paramWert2, ...
    if (~isempty(varargin)) && (rem(length(varargin),2) == 0)

    end

end
 


Hoffe da kann einer weiterhelfen Smile
Danke schonmal im Voraus Wink
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 17.531
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 10.08.2015, 10:58     Titel:
  Antworten mit Zitat      
Hallo,

hast du es schon mit dem properties-Befehl versucht?
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfänger 2.0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 17.10.13
Wohnort: kreis Karlsruhe
Version: ---
     Beitrag Verfasst am: 10.08.2015, 11:10     Titel:
  Antworten mit Zitat      
Oh man ich dusel Laughing
Hab die Funktion total vergessen Embarassed ja das funktioniert danke:)

Und wie schaut es mit der zweiten Frage aus? Kann man Parameter dynamisch angeben?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 17.531
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 10.08.2015, 11:14     Titel:
  Antworten mit Zitat      
Hallo,

sicher kann man. Man konstruiert ein Cell Array data und übergibt dann an die Funktion
Code:

Die Frage ist nur, was das bringt. Ob du nun das Cell Array varargin oder das übergebene Cell Array verarbeiten musst, ist doch gleichgültig?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfänger 2.0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 17.10.13
Wohnort: kreis Karlsruhe
Version: ---
     Beitrag Verfasst am: 10.08.2015, 11:25     Titel:
  Antworten mit Zitat      
Naja die Funktion wird auch von anderen Funktionen aus aufgerufen und dort habe ich das Problem nicht.. möchte ungern so viel am restlichen Code anpassen müssen

Und wenn ich eine cellarray data{:} übergebe, habe ich in der Zielelfunktion ja stehen varargin{1} == data{:} und nicht sowas wie varargin{1} == data{1}

oder vielleicht fange ich das ab:
Code:

%in der zielfunktion
if (length(varargin)==1) && (iscell(varargin{1}))
    varargin = varargin{1};
end
 


ist das so klug gelöst? oder gibt es da was "richtiges"?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 17.531
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 10.08.2015, 11:31     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Und wenn ich eine cellarray data{:} übergebe, habe ich in der Zielelfunktion ja stehen varargin{1} == data{:} und nicht sowas wie varargin{1} == data{1}

Hast du's denn mal ausprobiert?

Code:


und Aufruf mit
Code:
data = {'bla', 1, 'blabla', 2};
testvararg(data{:})


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfänger 2.0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 17.10.13
Wohnort: kreis Karlsruhe
Version: ---
     Beitrag Verfasst am: 10.08.2015, 11:34     Titel:
  Antworten mit Zitat      
Ja, am Freitag erst.. aber es lief nicht.
Hmm wenn du meinst es sollte funktionieren, versuche ich es gleich wieder.
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfänger 2.0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 17.10.13
Wohnort: kreis Karlsruhe
Version: ---
     Beitrag Verfasst am: 10.08.2015, 11:38     Titel:
  Antworten mit Zitat      
Nein funktioniert nicht ich bekomme das cellarray zurück
Hab ich wohl doch nichts falsch gemacht letzte Woche.
Code:

data = {'asd', 'dsa'};
argtest(data)
 

Code:

function argtest(varargin)
    if (~isempty(varargin)) && (rem(length(varargin),2) == 0)
        disp(varargin{1}, varargin{2});
    else
        disp(varargin{1});
    end
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 17.531
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 10.08.2015, 11:43     Titel:
  Antworten mit Zitat      
Hallo,

und mit
Code:
argtest(data{:})

?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfänger 2.0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 17.10.13
Wohnort: kreis Karlsruhe
Version: ---
     Beitrag Verfasst am: 10.08.2015, 11:53     Titel:
  Antworten mit Zitat      
Oh super das funktioniert ja.
War ja wieder klar, dass es so einfach geht! Rolling Eyes

danke dir Smile
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
.


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


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


Copyright © 2007 - 2017 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.