Is there the more elegant way to do this?

1 visualizzazione (ultimi 30 giorni)
G A
G A il 14 Giu 2019
Modificato: G A il 14 Giu 2019
By trial and error I came to the following solution for choosing in my GUI a colormap and the number of colors to be used for my 3D surf plot:
%CM_3D is the value from uicontrol popupmenu: 'String',{ 'parula'; 'jet'; 'hsv'; 'hot'}
%NumC=5 is the str2double input from uicontrol edit: 'String','5'
%NumC can be empty matrix [], then the number of colors expected to be the default number
%colormap parula or colormap parula(5) or colormap parula() works; colormap parula(NumC) and colormap parula([]) does nor work
%colormap(parula) or colormap(parula(NumC)) or colormap(parula()) works; colormap(parula([])) does nor work
switch CM_3D
case 1
cm = @parula;
case 2
cm = @jet;
case 3
cm = @hsv;
case 4
cm = @hot;
end
if isempty(NumC)||isnan(NumC)||NumC==0
colormap(cm()), %colormap(cm) does not work
else
colormap(cm(NumC)),
end
Is there more elegant (or 'professional') solution?

Risposta accettata

Matt J
Matt J il 14 Giu 2019
Modificato: Matt J il 14 Giu 2019
You don't need the switch block. You can just do,
items = get(hObject,'String');
index_selected = get(hObject,'Value');
cm = str2func( items{index_selected} );

Più risposte (0)

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by