如何在MATLAB中绘制三阶张量

如何在MATLAB中绘制三阶张量,matlab,plot,3d,tensor,visualize,Matlab,Plot,3d,Tensor,Visualize,大小为(100100)的张量a,所有元素支配对角线 如何在MATLAB中可视化a它,零为白色,一为黑色。我在MS office中绘图,这就是我想要的 对于矩阵情况,我们可以可视化如下 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 fo

大小为(100100)的张量
a
,所有元素支配对角线

如何在
MATLAB
中可视化
a
它,零为白色,一为黑色。我在MS office中绘图,这就是我想要的

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

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
图像是

如何用类似的方法计算张量


如何用噪声可视化张量?像矩阵上的噪声一样

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

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))

我用scatter3试过:

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);

酷。。表面反射光线,你能把它去掉,使它变成纯黑色吗?如果我们在张量
a
上加上噪声,它也能工作吗?比如,在对角线之外有一些黑色点的图形?你可以去除中间的4条线来去除光线。张量<代码> A<代码>被当作一个布尔数组,如果你添加噪声,你是指随机翻转假到真吗?然后,将创建“是”黑色面片。如果你的意思是只在整个数组中添加非零噪声,你将得到一个巨大的黑色立方体。谢谢,我想在张量的每个元素中添加噪声,比如
a(I,j,k)+0.5*兰德(1,1)
nonzeros = find(a);
[px,py,pz] = ind2sub(size(a),nonzeros);
scatter3(px,py,pz,'k','.');