私はあなたの質問を完全に誤解している可能性があります。その場合はお詫びします。しかし、私は次の3つの方法のうちの1つが実際にあなたが必要とするものかもしれないと思います。メソッド3は、あなたが提供した例のように見えるイメージを提供しますが、私は非常に別のルートを使用しています(sphere
コマンドを使用せず、「内側のボクセル」と「外側のボクセル」を計算するセンターからの距離がある場合は直接)。私は2番目のイメージを3番目のイメージに反転しました。それはそれがより良く見えたからです。球体をゼロで塗りつぶすと、ほぼ黒いディスクのように見えました。
%% method 1: find the coordinates, and histogram them
[x y z]=sphere(200);
xv = linspace(-1,1,40);
[xh xc]=histc(x(:), xv);
[yh yc]=histc(y(:), xv);
% sum the occurrences of coordinates using sparse:
sm = sparse(xc, yc, ones(size(xc)));
sf = full(sm);
figure;
subplot(1,3,1);
imagesc(sf); axis image; axis off
caxis([0 sf(19,19)]) % add some clipping
title 'projection of point density'
%% method 2: fill a sphere and add its volume elements:
xv = linspace(-1,1,100);
[xx yy zz]=meshgrid(xv,xv,xv);
rr = sqrt(xx.^2 + yy.^2 + zz.^2);
vol = zeros(numel(xv)*[1 1 1]);
vol(rr<1)=1;
proj = sum(vol,3);
subplot(1,3,2)
imagesc(proj); axis image; axis off; colormap gray
title 'projection of volume'
%% method 3: visualize just a thin shell:
vol2 = ones(numel(xv)*[1 1 1]);
vol2(rr<1) = 0;
vol2(rr<0.95)=1;
projShell = sum(vol2,3);
subplot(1,3,3);
imagesc(projShell); axis image; axis off; colormap gray
title 'projection of a shell'
Iは、プロット結果に興味がないんだけど、3D球体の投影である2D行列を有すること。それがとてもシンプルなのであれば、なぜあなたはそれを答えにしませんか? –
しかし、球の投影である2D行列ではどういう意味ですか?行列はどのようにして球の投影になりますか?それは意味をなさない... –
球は本質的に3Dオブジェクトであり、投影は2Dオブジェクトです。 Matlabの2Dオブジェクトは行列で表されます。その行列上で 'imagesc'を使うと、添付した画像のようなものが得られることが期待されます。そこには、"リング "に沿ってポイント(またはより高いピクセル値)が蓄積され、真ん中にはずっと少なくなります。 –