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 はベクトルではなく行列を返します。これは、各色には 3 つの要素 (赤、緑、青) があるためです。

>> 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 に答える