3
a = zeros(100,100,100);
distance = [1,21,41,61,81];
for d = 1:5
    for i=distance(d): distance(d)+19
        for j=distance(d): distance(d)+19
            for k=distance(d): distance(d)+19
                a(i,j,k) = 1;
            end
        end
    end
end

大小为 (100,100,100)的张量a和所有元素主导对角线。

如何用零显示aMATLAB是白色,一个是黑色。我在 MS 办公室绘图,这就是我想要的预期图像

对于矩阵情况,我们可以可视化如下

X = zeros(100,100);
distance = [1,21,41,61,81];
for d = 1:5
    for i=distance(d): distance(d)+19
        for j=distance(d): distance(d)+19
            X(i,j) = 1;
        end
    end
end


imagesc(a)
im = imagesc(1-X)
colormap(gray(256))

并且图像是 二维矩阵可视化

如何为张量做类似的事情?

以及如何用噪声来可视化张量?像矩阵上的噪音这里

4

2 回答 2

4

您可以使用isosurface和非常接近 MS Office 中生成的情节isocaps。AFAIK MATLAB 没有任何生成倾斜投影的内置方法,但如果您对正交投影没问题,以下可能对您有用。

color = [0.2,0.2,0.2];
p1 = patch(isosurface(a), 'FaceColor', color, 'EdgeColor', 'none');
p2 = patch(isocaps(a), 'FaceColor', color, 'EdgeColor', 'none');

camlight left
camlight
lighting gouraud
isonormals(a, p1);

grid on;
view(3);
camorbit(-40,0);

在此处输入图像描述

于 2018-05-28T22:11:40.123 回答
0

我用 scatter3 试过这个:

nonzeros = find(a);
[px,py,pz] = ind2sub(size(a),nonzeros);
scatter3(px,py,pz,'k','.');
于 2018-05-28T22:27:00.830 回答