Si tout échoue, vous pouvez essayer la routine de rappel:
function=ChangeCMap()
CMList=get(CMapList,'string'); %% Read colormap names
CMVal =get(CMapList,'value'); %% Get the index of desired colormap
try
colormap(Ax,CMList{CMVal}); %% Try to set the colormap...
catch Msg %% ... if it fails, then:
if strcmp(Msg.stack.name,'colormap') %% Check if error was caused by colormap function
set(Ax,'colormap`,'jet'); %% set "default" colormap (optional)
indices=1:length(CMList);
set(CMapList,'string',CMList{indices~=CMVal}) %% remove the colormap name thet caused error
else
disp(Msg) %% Print the error message in matlab shell
end
end
end
Dans cet exemple, les variables partagées CMapList
- gérer à t Le menu contextuel - et Ax
- poignée des axes - sont attendus. Lorsque la fonction est appelée, elle tente de définir la palette de couleurs. En cas d'échec, définissez la palette de couleurs par défaut et supprimez le nom problématique du menu.
Assurez-vous que les premières et dernières cartes de couleurs ne provoqueront pas d'erreur, sinon la mise à jour CMapList
devra gérer ces options.
Vous pouvez également profiter du fait que chaque palette de couleurs a son propre fichier .m
de sorte que vous n'avez pas besoin d'attendre jusqu'à ce que l'erreur se produit.
CMap='bone'; %% example
if exist(CMap,'file')
colormap(Ax,CMap) %% bone.m exist somewhere in the matlab paths
else
colormap(Ax,'jet') %% bone.m does not exist in the matlab paths
end
Cela soulève un point - vous pouvez définir vos propres palettes de couleurs et de faire l'algorithme pour générer des fichiers manquants .m
...
En effet. Parula a été présenté dans MATLAB 2014b mais pas en 2014a –
Hey! les gens vous ont donné des réponses cool, pensez à accepter l'un d'entre eux comme valide –