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

Submatrix in GUI darstellen

 

Lloyd Blankfein
Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2012, 13:48     Titel: Submatrix in GUI darstellen
  Antworten mit Zitat      
Hallo,

Code:

function WOverviewSimulation_OpeningFcn(hObject, eventdata, handles, varargin)
    import Laz.Data.DataAccessObjects.*;
    import Laz.Util.*;
    global ModelContainer selectedModel;
    set(handles.st_title_ov,'String', horzcat('Setup Simulation - ',selectedModel.name));
    if selectedModel.class_id == -1
        colnames_grp = {'Model','SimuDatum (dd.mm.yyyy)','Contract','SimuRangeStart','SimuRangeEnd','SimStep'};
        colfmt_grp = {'char','char','char','numeric','numeric','numeric'};
        coledit_grp = [false true false false false false];
        colwdt_grp = {160 160 80 120 80 80};
        data_grp=cell(size(selectedModel.Composite_Indicator,2),6);
        modelids=zeros(1,size(ModelContainer,2));
        for j=1:size(ModelContainer,2)
            modelids(1,j)=ModelContainer(1,j).id;
        end
        ci_modelids=zeros(1,size(selectedModel.Composite_Indicator));
        for j=1:size(selectedModel.Composite_Indicator,2)
            ci_modelids(1,j)=selectedModel.Composite_Indicator(1,j).mid;
        end
        [~, index] = ismember(selectedModel.id, modelids);
        clear global selectedModel_path;
        for j=1:size(ModelContainer(1,index).Composite_Indicator,2)
            [~, pos] = ismember(ci_modelids(1,j), modelids);
            selectedModel=ModelContainer(1,pos);
            if isstruct(ModelContainer(1,index).Simu_Indicator)
                ModelContainer(1,index).Simu_Indicator(1,j)=SimulationDAO.BuildSimulationTree();
            else
                ModelContainer(1,index).Simu_Indicator=SimulationDAO.BuildSimulationTree();
            end
            clear global selectedModel_path;
            data_grp(j,1)=cellstr(selectedModel.name);
            data_grp(j,2)=cellstr(datestr(date,'dd.mm.yyyy'));
            data_grp(j,3)=ModelContainer(1,index).Simu_Indicator(1,j).simucontract;
            data_grp(j,4)=num2cell(ModelContainer(1,index).Simu_Indicator(1,j).simurangestart);
            data_grp(j,5)=num2cell(ModelContainer(1,index).Simu_Indicator(1,j).simurangeend);
            data_grp(j,6)=num2cell(ModelContainer(1,index).Simu_Indicator(1,j).simstep);
        end
        selectedModel=ModelContainer(1,index);
    else
        colnames_grp = {'SimuDatum (dd.mm.yyyy)','Contract','SimuRangeStart','SimuRangeEnd','SimStep'};
        colfmt_grp = {'char','char','numeric','numeric','numeric'};
        coledit_grp = [true true true true true];
        colwdt_grp = {160 80 120 80 80};
        data_grp=cell(1,5);
        data_grp(1,1)=cellstr(datestr(date,'dd.mm.yyyy'));
        data_grp(1,2)=selectedModel.Simu_Indicator.simucontract;
        data_grp(1,3)=num2cell(selectedModel.Simu_Indicator.simurangestart);
        data_grp(1,4)=num2cell(selectedModel.Simu_Indicator.simurangeend);
        data_grp(1,5)=num2cell(selectedModel.Simu_Indicator.simstep);
    end
    cum_colwdt=34;
    for i=1:size(colwdt_grp,2)
        cum_colwdt=cum_colwdt+colwdt_grp{i};
    end
    cum_rowhi=19.5;
    rowhi=cum_rowhi;
    for i=1:size(data_grp,1)
        cum_rowhi=cum_rowhi+rowhi;
    end
    set(handles.figure1,'Units', 'pixels');
    fpos=get(handles.figure1,'Position');
    if fpos(3)-fpos(1)<cum_colwdt
        set(handles.figure1,'Position', [fpos(1) fpos(2) fpos(1)+cum_colwdt+20 fpos(4)]);
    end
    fpos=get(handles.figure1,'Position');
    handles.htable = uitable('Units', 'pixels',...%check that!!!
                     'Position', [fpos(3)/2-cum_colwdt/2 fpos(4)/2-cum_rowhi/2 cum_colwdt cum_rowhi],...
                     'Data',  data_grp,...
                     'ColumnName', colnames_grp,...
                     'ColumnFormat', colfmt_grp,...
                     'ColumnWidth', colwdt_grp,...
                     'ColumnEditable', coledit_grp,...
                     'CellSelectionCallback',{@select_callback_param});
    contextSort = uicontextmenu;
    %Kontextmenu zum Sortieren der Spalten erzeugen
    uimenu(contextSort,'Label','Sortieren ...','Callback',{@mn_sort,handles});
    set(handles.htable,'uicontextmenu',contextSort);
    handles = Util.setUiColors(handles);
    handles.output = hObject;
    guidata(hObject, handles);
 


mit obigen Code stelle ich einen Vektor / Matrix in der GUI dar. Das kann so aussehen:

Datum | char | integer | integer | integer |

oder so:

char | Datum | char | integer | integer | integer |
char | Datum | char | integer | integer | integer |
char | Datum | char | integer | integer | integer |
...

So weit so gut. Nun möchte ich ein zusätzliches feature einbauen:

char | Datum | char | integer | integer | integer |
char
|-char | Datum | char | integer | integer | integer |
|-char | Datum | char | integer | integer | integer |
char | Datum | char | integer | integer | integer |
char | Datum | char | integer | integer | integer |
|-char | Datum | char | integer | integer | integer |
|-char | Datum | char | integer | integer | integer |
|-char | Datum | char | integer | integer | integer |
|-char | Datum | char | integer | integer | integer |
char | Datum | char | integer | integer | integer |

Ich möchte eine Submatrix in der Matrix darstellen. Geht das?
Falls ja, wie? Im Forum / Netz habe ich dazu nichts gefunden.
Falls nein, unterstützt Matlab Alternativen (z. B. eine "Baumstruktur" wie man sie auf Internetseiten finden kann)?

Vielen Dank für eure Hilfe & Anregungen!

Gruß,
Lloyd
Private Nachricht senden Benutzer-Profile anzeigen


Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2012, 14:22     Titel: Ergänzung
  Antworten mit Zitat      
char | Datum | char | integer | integer | integer |
char
|-char | Datum | char | integer | integer | integer |
|-char | Datum | char | integer | integer | integer |
char | Datum | char | integer | integer | integer |
char | Datum | char | integer | integer | integer |
|-char
|-char | Datum | char | integer | integer | integer |
|-char | Datum | char | integer | integer | integer |
|-char | Datum | char | integer | integer | integer |
|-char | Datum | char | integer | integer | integer |
|-char | Datum | char | integer | integer | integer |
char | Datum | char | integer | integer | integer |
char | Datum | char | integer | integer | integer |
|-char
|-char
|-char
|-char | Datum | char | integer | integer | integer |
|-char | Datum | char | integer | integer | integer |
|-char | Datum | char | integer | integer | integer |
|-char | Datum | char | integer | integer | integer |

Theoretisch kann also ewig verschachtelt werden (klar in der GUI macht das keinen Sinn, der Algorithmus kann dies aber). Zur Zeit wird max 5x verschachtelt!
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2012, 14:26     Titel:
  Antworten mit Zitat      
Upps, der Tabulator wird hier offensichtlich unterdrückt.

Jedes alleinstehende |-char steht für eine Submatrix. Die darauf folgenden Inhalte sollten eigentlich eingerückt dargestellt werden!
Private Nachricht senden Benutzer-Profile anzeigen
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 07.02.2012, 16:30     Titel:
  Antworten mit Zitat      
Hey,

ich weiß nicht genau wie es jetzt aussehen soll aber zu Baumstrukturen fällt mir spontan der uitree ein (der ist undokumentiert) und das Property Grid ( com.jidesoft.grid.PropertyPane).

Beispiele:
http://undocumentedmatlab.com/blog/customizing-uitree/
http://undocumentedmatlab.com/blog/advanced-jide-property-grids/

Greetings
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2012, 17:52     Titel:
  Antworten mit Zitat      
Hallo Marco,

vielen Dank für deine Info.

Code:

>> mtree = uitree
Warning: This undocumented function will be replaced in a future release.
To continue to use it, add 'v0' as its first argument, followed by its normal calling
sequence.
> In uitree at 106
 
mtree =
 
   javahandle_withcallbacks.com.mathworks.hg.peer.UITreePeer
 


Hmm, ... da uitree in zukünftigen Distributionen nicht mehr unterstützt wird, hat sich das für mich erledigt.

Gibt es weitere Ansätze?

Gruß,
Lloyd
Private Nachricht senden Benutzer-Profile anzeigen
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 07.02.2012, 18:10     Titel:
  Antworten mit Zitat      
Hey,

also wenn du gänzlich auf undokumentierte Sachen und Java Sachen verzichten möchtest, dann wird das wohl nix, zumindest nix interaktives.

Wenn es nichts interaktives sein soll, dann könnte ich mir vorstellen, dass du es über html lösen könntest. Ich meine mal irgendwo soetwas gelesen zu haben. Ich glaube beim MFE...

Greetings
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2012, 18:28     Titel:
  Antworten mit Zitat      
Zitat:
also wenn du gänzlich auf undokumentierte Sachen und Java Sachen verzichten möchtest


Das hab ich nicht gesagt. Allerdings wäre es schon ärgerlich, wenn meine Algorithmen in zukünftigen Matlabversionen nicht mehr laufen.

MFE???
Private Nachricht senden Benutzer-Profile anzeigen
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 08.02.2012, 11:13     Titel:
  Antworten mit Zitat      
Hey,

MFE = Matlab File Exchange. Ich glaube, dass ich dort etwas über HTML Tabellen in Matlab gelesen habe. Die kann man sehr flexibel und optisch schöner gestalten als die uitable. Das war nur mein Gedanke...

Der uitree ist schon seit Jahren undokumentiert, genauso wie die uitabs. Bei undokumentierten bzw. semi dokumentierten Sachen ist die Wahrscheinlichkeit höher, dass die sich in Zukunft ändern werden und dass diese ggf. noch den ein oder anderen Bug haben. Nicht ohne Grund stehen diese Funktionen noch nicht offiziell zur Verfügung. Dennoch kann man diese ja benutzen.

Falls sich natürlich in irgendeinem kommenden Release diesbezüglich etwas ändern sollte, muss man selbstredent entsprechend umprogrammieren bzw. anpassen.

Beim benutzen von Javaobjekten muss man auch die undokumentierte Funktion javacomponent verwenden.

Du kannst natürlich versuchen die Matlab Listbox so zu formatieren, dass sie einem Tree nahe kommt. Das fände ich persönlich ein bisl umständlich.

Ich würde es wahrscheinlich mit dem com.jidesoft.grid.PropertyPane versuchen. Aber das ist ja jedem selbst überlassen...

Greetings
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2012, 16:34     Titel:
  Antworten mit Zitat      
Hallo,

ich habe mich jetzt für den uitree entschieden. Das Konzept ist soweit auch klar. Nun möchte ich diesen uitree in eine gui integrieren.
Für ein uitable geht das z. B. so:

Code:

        handles.htable = uitable('Units', 'pixels',...%check that!!!
                         'Position', [fpos(3)/2-cum_colwdt/2 fpos(4)/2-cum_rowhi/2 cum_colwdt cum_rowhi],...
                         'Data',  data_grp,...
                         'ColumnName', colnames_grp,...
                         'ColumnFormat', colfmt_grp,...
                         'ColumnWidth', colwdt_grp,...
                         'ColumnEditable', coledit_grp,...
                         'CellSelectionCallback',{@select_callback_param});
        contextSort = uicontextmenu;
        %Kontextmenu zum Sortieren der Spalten erzeugen
        uimenu(contextSort,'Label','Sortieren ...','Callback',{@mn_sort,handles});
        set(handles.htable,'uicontextmenu',contextSort);
 


Wie integriere ich den uitree in die GUI?

Vielen Dank für eure Hilfe!

Gruß,
Lloyd
Private Nachricht senden Benutzer-Profile anzeigen
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 13.02.2012, 17:57     Titel:
  Antworten mit Zitat      
Hey,

schau einfach beim Yair auf die Seite. Da steht einiges dazu...

http://undocumentedmatlab.com/?s=uitree

Prinzipiell musst du jedes Node selbst erstellen. Der Tree macht so gut wie nix von allein...

Greetings
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2012, 19:06     Titel:
  Antworten mit Zitat      
Hallo Marco,

habe die Seite bereits angeschaut, sehr interessant. Allerdings finde ich nix zum Thema "embedded uitree".

Gruß,
Lloyd
Private Nachricht senden Benutzer-Profile anzeigen
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 14.02.2012, 17:44     Titel:
  Antworten mit Zitat      
Hey,

du kannst wie bei allen uicontrols den Tree auch in deine Figure oder Panel platzieren. Das kannst du z.B. in der opening fcn machen (wenn du GUIDE benutzt hast).
Code:

[tree,container] = uitree('v0');
set(container,'parent',handles.panel)
set(tree, 'Units', 'pixel',...
    'position', [3 47 248 678]);
 

Das steht aber auch auf der Internetseite die ich oben gepostet habe...

Greetings
Private Nachricht senden Benutzer-Profile anzeigen
 
Lloyd Blankfein
Themenstarter

Forum-Century

Forum-Century



Beiträge: 149
Anmeldedatum: 23.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2012, 18:24     Titel:
  Antworten mit Zitat      
Hallo Marco,

vielen Dank für dein feedback! Ich habe das Problem inzwischen selbst lösen können.
Auf http://undocumentedmatlab.com/ habe ich tatsächilch nichts zu dem Thema gefunden.
Tonnen an Info zum uitree, aber eben keinen Hinweis darauf wie man diesen ins Panel einbindet.

Gruß,
Lloyd
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 - 2025 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.