1

我有绘制一些 3D 图形的功能

scatter3(mx,my,mz,3,mx.^2+my.^2); % mx, my and mz are vectors

我看到 C 是一个与 X 和 Y 长度相同的向量,因此根据文档,每个点的颜色应该线性映射到当前颜色图中的颜色。

我试过这个:

cmap = colormap;
disp(cmap(mx.^2+my.^2));

但我得到

Subscript indices must either be real positive integers or logicals.

有没有更简单的方法来解决这个任务?

谢谢

4

1 回答 1

2

这很容易。Colormap 不返回向量,而是返回矩阵。这是因为每种颜色都有三个分量(红色、绿色和蓝色)。

>> size(colormap)

ans =

    64     3

>> test = colormap;
>> test(7, :)

ans =

     0         0    0.9375

编辑...而且,我忘记了一些事情:索引必须是整数,以一种或另一种方式。您可能希望将它们四舍五入或将它们转换为整数。

EDIT2 ...根据您的示例, disp 语句的工作方式如下:

disp( cmap(1:( (size(cmap, 1)-1) / (length(mz)-1) ):size(cmap, 1), :) );
于 2012-12-14T21:20:03.760 回答