Verfasst am: 28.04.2014, 11:12
Titel: Setzen von abstrakten Properties
Hey,
habe folgendes Problem:
Ich habe 2 Klassen (Klasse A und Klasse B). In der Klasse A habe ich ein Propertie (FunsCell) welches eine Cell ist in dem Verschiedene Objekte der Klasse B enthalten sind. Die Klasse B hat auch eine Funktion um eines ihrer Properties (P1) festzusetzen (set_P1). Nun möchte ich in meiner Klasse A eine Funktion schreiben, welche das "Property" FunsCell so verändert, dass für jede "Zelle" das "P1" in dem Objekt (B) verändert wird.
Deine Frage ist immer noch unklar, was möchtest du den mit den Properties machen?
was stimmt denn mit bisherigen Umsetzung nicht, gibt es hier irgendwelche Fehler? Bitte dann Fehler posten oder erläutern, was du hier anders haben möchtest?
Ich glaube du möchtest die Properties auf einmal verändern. Ist das die Frage?
SirHeadless
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 30.04.2014, 07:48
Titel:
Hey,
ich freue mich, dass jemand versucht mir zu helfen. Ich hatte schon befürchtet, dass es mir nicht gelingt mein Problem hinreichend genau zu erläutern. Ich versuche es noch einmal mit Hilfe meines Codes.
Kurz gesagt geht es bei meiner Programmierung darum eine zufällige Funktion zu erstellen die von R^n nach R abbildet und welche dann später minimiert werden soll.
Ich habe hierzu nun eine Klasse rand_poly erstellt, welche zufällige Polynome erzeugt. Ein für mein Problem wichtiger Ausschnitt der Klasse ist der folgende
Code:
classdef rand_poly
% Die Klasse erstellt eine zufaelliges Polynom. Dazu wird ein Zufälliger % Vektor mit Gewichten und eine Zufällige Matriz mit Potenzen erstellt. % Der Vektor mit Gewichten is Element R^k wobei k eine in der Klasse % festgelegter Wert ist. Die Funktion lautet nun % f(x) = Summe_i^k ( c_i Produkt_j^n (x_j^(aji) )) % Ebenfalls wird die erte und zweite Ableitung der Funktion berechnet.
properties(GetAccess = 'public', SetAccess = 'public')
weights_c
weights_A
xdimension
k = 5
vekx = []
x = [] end methods
function RF = rand_poly(n) % Initialisiert die Funktion und setzt mit dem Aufruf von zwei % Funktionen die zufaellige Polynomdimension und die Gewichte % fest.
RF.xdimension = n;
[RF.weights_c,RF.weights_A] = RF.creat_rand_weights();
% Kann verwendet werden um k zufaellig zu waehlen % RF.k = RF.creat_rand_numbweights(10); end
function RF = set_xandvekx(RF,x)
RF.x = x;
RF.vekx = RF.calc_vekx(x);
end
Meine zweite Klasse heißt General_Test_Problem und hat ein Propertie funcs welches eine Cell sein soll. Diese wird bei der Erstellung eines Objekts der Klasse General_Test_Problem mit Objekten der Klasse rand_poly gefüllt. Dabei sind die Properties x und vekx der rand_poly Objekte noch leer. Nun möchte ich eine Funktion in meiner General_Test_Problem Klasse haben, die diese Properties der rand_poly Objekte füllt. Ich habe dies bis jetzt in der Funktion set_xandvekx versucht umzusetzten
function TP = set_x_for_all(TP,x)
nw_funcs = cell(1,TP.gdim+TP.hdim);
for i = 1:TP.gdim+TP.hdim
nw_funcs{i} = TP.funcs{i}.set_xandvekx(x);
end
TP.funcs = nw_funcs
end
Wenn ich nun ein General_Test_Problem Objekt erstelle und die funktion set_x_for_all aufrufe und danach mir die rand_poly Objekte in funcs anschaue, dann sind die vekx und x immer noch leer ([]).
Lasse ich mir aber die einzelnen nw_funcs in set_x_for_all ausgeben sehe ich, dass er rand_poly Objekte erstellt in denen x und vekx definiert ist. Leider Speichert er diese nicht wie gewünscht in die funcs Cell.
Ich denke man kann dieses Problem auch einfacher Erklären aber leider gelingt mir das nicht. Ich hoffe jedoch, dass mein Problem dieses mal verständlicher ist.
dann brauchst Du das Ergebnis nicht mehr zuweisen (schau in der Hilfe unter Value/Handle semantics nach).
Ciao,
Titus
Einstellungen und Berechtigungen
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
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.