Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 模糊颜色贴图的一部分_Matlab_Plot_Colorbar - Fatal编程技术网

Matlab 模糊颜色贴图的一部分

Matlab 模糊颜色贴图的一部分,matlab,plot,colorbar,Matlab,Plot,Colorbar,从以下代码和图开始: clc clear all [x, y, z] = peaks(1000); figure; p = surf(x,y,z); shading flat cm=colormap; Xm=-7; XM=8; caxis([Xm XM]) colorbar 我可以通过修改colormap来突出显示特定范围内的值。例如,通过将该范围内的颜色设置为红色: [x, y, z] = peaks(1000); figure; p = surf(x,y,z); shadin

从以下代码和图开始:

clc
clear all

[x, y, z] = peaks(1000);

figure;
p = surf(x,y,z);
shading flat

cm=colormap;

Xm=-7;
XM=8;
caxis([Xm XM])

colorbar

我可以通过修改colormap来突出显示特定范围内的值。例如,通过将该范围内的颜色设置为红色:

[x, y, z] = peaks(1000);

figure;
p = surf(x,y,z);
shading flat

cm=colormap;

Xm=-7;
XM=8;
caxis([Xm XM])

x1=2;
x2=4;
l1=findnearest(x1,linspace(Xm,XM,length(cm)));
l2=findnearest(x2,linspace(Xm,XM,length(cm)));

cm(l1:l2,:)=repmat([1 0 0],l2-l1+1,1);

colormap(cm)
colorbar

有没有办法让过渡变得不那么突然?也许通过模糊过渡附近的颜色

编辑:


代码使用函数

如果中间的颜色不重要,可以使用一些简单的线性褪色:

n = floor((l2-l1+1)/2);
fade = linspace(0, 1, n)';
cm(l1+n,:) = [1 0 0];
cm(l1:l1+n-1,:)=fade * [1 0 0] + (1-fade) * cm(l1-1, :);
cm(l2:-1:l2-n+1,:)=fade * [1 0 0] + (1-fade) * cm(l2+1, :);

旁注:如果您想要更平滑的过渡,您可以在任何计算之前(即在计算
l1
l2
之前)首先对颜色贴图进行上采样,如下所示:
cm=parula(256);彩色地图(cm)