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

subsref?

 

Nicolas S.
Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 19.11.2009, 09:46     Titel: subsref?
  Antworten mit Zitat      
Hallo zusammen,

ich habee folgendes Problem: Ich habe eine Klasse ("value" oder "handle"-Klasse) bei der alle Einträge zeilenweise immer zueinandergehörige Werte beinhalten, z.B.:
Code:

a.Nr = [1; 2; 3; 4];
a.T = [0.1 0.2; 0.1 0.33; 0.1 0.0; 3.0 1.1];
a.v = {'a', 'b', 'c'. 'd'};
 

(die Klasse hat also die Properties "Nr", "T", und "v", wobei alle Arrays oder Cell arrays sind, die die gleiche Anzahl an Spalten aufweisen.)

Nun will ich einen Mechanismus implementieren, daß gilt:
Code:

b = a([1 3])
Nr :  [1 3]
T  :  [0.1 0.2;  0.1 0.0]
v  :  {'a' 'c'}
 

so daß beim Kopieren/Indizieren immer zueinander passende Datensätze zusammengehören.

Die Frage lautet: "Wie?"
- Ist "subsref" genau für solche Fälle gedacht?
- Wie wäre das reell zu implemtieren?
- Wäre es ein Unterschied in der Implementierung, wenn ich nur Arrays oder Arrays und Cell Arrays berücksichtigen muss?

Hintergrund der Geschichte ist, daß ich aus Performancegründen nicht alle Zeilen in ein einzelnes Objekt packen darf, sondern das Ganze als Array in einem einzelnen Objekt hinterlegt sein muß. Für die einzelne Indizierung ist allerdings Geschwindigkeit kein Problem. (Es wird sehr oft auf die ganzen Untertabellen, z.B. a.T zugegriffen aber selten ein Objekt indiziert kopiert).

viele Grüße
Nicolas
_________________

--
The programmer suggested it.
Private Nachricht senden Benutzer-Profile anzeigen


Nicolas S.
Themenstarter

Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 23.11.2009, 14:16     Titel:
  Antworten mit Zitat      
Hallo nochmal,

nachdem sich noch keiner gemeldet hat, ich aber mal naiv davon ausgehe, daß das Thema nicht nur für mich interessant ist, habe ich mich mal hingesetzt und an einer Lösung gebastelt.

Die entsprechende Klassendatei "Reftest.m" ist im Anhang.

Von der Verwendung:
Code:

clear classes

A = Reftest;
A.data1 = (1:4)';
A.data2 = [(1:4)' (5:8)' (9:12)'];
A.skalar = 1;

a = A(1:3).data2
a =

     1     5     9
     2     6    10
     3     7    11
 


Jetzt die interessante Frage: Habe ich wohl etwas vergessen? Ließe sich da etwas verbessern?

Viele Grüße
Nicolas

Reftest.m
 Beschreibung:
% Testklasse zum Verhalten von subsref
% Wird das Objekt direkt numerisch indiziert, sollen die
% properties zeilenweise dem Ausgabeobjekt zugeordnet werden.
% Eine sonstige Veraenderung ist zu vermeiden.

Download
 Dateiname:  Reftest.m
 Dateigröße:  4.17 KB
 Heruntergeladen:  928 mal

_________________

--
The programmer suggested it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Nicolas S.
Themenstarter

Forum-Century

Forum-Century


Beiträge: 146
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 24.11.2009, 11:05     Titel:
  Antworten mit Zitat      
Auf die Gefahr hin, daß das zu einem Monolog wird....

Ich habe mich nochmal ein wenig hingesetzt im Vergleich zu der gestrigen Version; insbesondere die Fehlerbehandlung von mehrdimensionalen Indices ist jetzt deutlich konformer mit dem üblichen Verhalten von Matlab-Klassen.

Es wäre schön, wenn jemand, der sich für diese Art von Problemen interessiert mal gegentesten würde.

Viele Grüße
Nicolas

P.S.: Das "package"-Verzeichnis "+generic" wird nicht unbedingt benötigt, es wird nur oben direkt hinter "classdef" darauf verwiesen.

test_rowindexing.m
 Beschreibung:
test_rowindexing: Klasse aus Package generic; konkret

Download
 Dateiname:  test_rowindexing.m
 Dateigröße:  914 Bytes
 Heruntergeladen:  1031 mal
rowindexing.m
 Beschreibung:
rowindexing: Klasse aus Package generic;
abstrakt

Download
 Dateiname:  rowindexing.m
 Dateigröße:  5.82 KB
 Heruntergeladen:  902 mal

_________________

--
The programmer suggested it.
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.