Es ist möglich, dass ich Ihre Frage völlig falsch verstehe, in diesem Fall entschuldige ich mich; aber ich denke, dass eine der folgenden drei Methoden in der Tat sein kann, was Sie brauchen. Beachten Sie, dass Methode 3 ein Bild liefert, das dem von Ihnen bereitgestellten Beispiel sehr ähnlich sieht ... aber ich kam mit einer sehr unterschiedlichen Route (ohne den Befehl sphere
überhaupt zu verwenden, aber "Voxel im Inneren" und "Voxel außerhalb" zu berechnen) direkt mit ihrer Entfernung von der Mitte). Ich habe das zweite Bild im Vergleich zum dritten umgedreht, da es auf diese Weise besser aussah - das Füllen der Kugel mit Nullen ließ es fast wie eine schwarze Scheibe aussehen.
%% 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'
Ich bin nicht daran interessiert, die das Ergebnis Plotten, aber eine 2D-Matrix zu haben, die die Projektion der 3D-Kugel ist. Und wenn es so einfach ist, warum gibst du das nicht als Antwort? –
Aber was meinst du mit 2D-Matrix, die die Projektion einer Kugel ist? Wie kann eine Matrix eine Projektion einer Kugel sein? Das macht keinen Sinn ... –
Eine Kugel ist im Wesentlichen ein 3D-Objekt, eine Projektion ist ein 2D-Objekt. In Matlab werden 2D-Objekte durch eine Matrix dargestellt. Wenn ich 'imagesc' auf dieser Matrix verwende, erwarte ich, dass etwas wie das Bild kommt, das ich angehängt habe, wo es eine Ansammlung von Punkten (oder höheren Pixelwerten) entlang des" Rings "und viel weniger in der Mitte gibt. –