首页 > 技术文章 > 关于动态聚焦的合成程序改进笔记20150327

funnyman 2015-03-27 17:10 原文

1、原程序linear_array_imaging里面的image_data到env的处理是取包络,使用了hilbert函数。

image_data里面的第20列数据的plot显示ienv里面的第20列数据的plot显示

2、matlab 的 colormap 函数详解

matlab matlab中,每个figure都有(而且仅有)一个colormap,翻译过来就是色图。 COLORMAP(MAP) 用MAP矩阵映射当前图形的色图。 COLORMAP('default') 默认的设置是 JET. MAP = COLORMAP 获得当前色图矩阵. COLORMAP(AX,...) 应用色图到AX坐标对应的图形,而非当前图形。 MAP实际上是一个mx3的矩阵,每一行的3个值都为0-1之间数,分别代表颜色组成的rgb值, [1 0 0] 代表红色,[0 1 0]代表绿色,[0 0 1]代表蓝色。系统自带了一些colormap,如:winter、autumn等。输入winter,就可以看到它是一个64x3的矩阵。用户可以自定义自己的colormap,而且不一定是64维的。 [0 0 0] is black, [1 1 1] is white, [1 0 0] is pure red, [.5 .5 .5] is gray, and [127/255 1 212/255] is aquamarine. 那么颜色在fill或patch,SURFACE等函数中到底是如何显示的呢?本质上,是把具体的颜色变成colormap中的相应index,也就是行数。这个过程叫做换算映射:将指定的数值颜色向量(矩阵)C,映射到对应的颜色。颜色矩阵C的数值范围为[Cmin, Cmax], Cmin 和Cmax的数值或者为 min(min(C)) max(max(C)),也可以在CAXIS中设置。 在matlab中,图形窗的属性'CdataMapping‘缺省设置值为'scaled',也就是线性的映射。 Cmin对应的值映射到colormap的第一行,Cmax对应的值映射到colormap的最后一行。 映射过程如下: 首先,需要根据caxis取得Cmin和Cmax两个变量(默认值为0和1),画图时如果指定了数值颜色向量(矩阵)C,Cmin和Cmax自动设置为C中的最大值和最小值。当你想控制时,可以自定义。比如将Cmax减小,这样将把所有大于Cmax的C值,全部都映射到同一个颜色(colormap 中index最大的行代表的颜色)。 根据Cij在Cmin和Cmax之间的比例关系,确定对应的颜色的index,默认为线性映射。 也就是说,当制定了数值颜色向量(矩阵)C之后画图,图中颜色的使用范围会自动占满整个颜色范围!

实例: clc;

clear all;

x=[0 1 1 0];

y=[0 0 1 1]; %定义四个点 [0 0] [1 0] [1 1] [0 1]

H_F=fill(x,y,[0 0.1 0.2 0.6]); %定义四个点的C值

row_cmap = 15; %定义色图矩阵的行数

color_map1=zeros(row_cmap,3); %定义色图矩阵

color_r = 0:1/(row_cmap-1):1;

color_g = 0:1/(row_cmap-1):1;

color_b = 0:1/(row_cmap-1):1;

color_map1(:,1) = color_r;

color_map1(:,2) = color_g;

colormap(color_map1);

colorbar;

 

%本例中颜色从[0 0 0] 变化到[1 1 0] %增加row_cmap的值,如变化到100,则可看到颜色的渐变,而非跳跃型变化。

推荐阅读