0

我正在尝试使用以下代码正确定义我的参数(temp)并返回变量(color)。此代码生成一个 101 长的颜色数组(1x3 矩阵)列表。换句话说,它创建了一个 101x3 矩阵,每一行都定义了 Jet 颜色图中的一种颜色。

我的问题是它可以工作并创建一个地图,但我无法弄清楚如何正确定义 temp 参数,所以如果我想显示 tempToColor(0) 它将显示第一行 (0 0 .5769)。或 tempToColor(50) 它将显示第 49 行 (.5 1 .5) 上颜色的行索引。

这是我的代码。注意 steamTemp = 100,coolantTemp = 0(常量函数),这可能不是编写这个程序的最佳方式,但我的导师给了我们这种风格作为硬件作业的一部分,我需要尽可能地坚持下去。

function [color] = tempToColor(temp)

% This function turns a temperature into
% different colors based on that temp.


persistent map

if isempty(map)

    map = jet(steamTemp-coolantTemp+1);
else

end

end
4

1 回答 1

0

基本矩阵索引:

%# colormap matrix: 101-by-3
N = 101;
cmap = jet(N);

%# 66-th row
clr = cmap(66,:)

现在,如果您想将某个范围内的值映射到颜色,您可以应用插值:

%# range of values [10,30]
mn = 10; mx = 30;
val = 22.3;

%# normalize value into [0,1] range and map it into a color
f = @(x) interp1(linspace(0,1,N), cmap, (x - mn)./(mx - mn));

例子:

val = linspace(mn,mx,50);
clr = f(val);      %# vectorized call
rgbplot(clr)
于 2013-04-14T01:57:15.643 回答