如何在 MATLAB 中绘制三阶张量
How plot a 3-order tensor in MATLAB
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
和所有元素支配对角线。
如何在 MATLAB
中显示 a
0 是白色,1 是黑色。我在MS office中绘图,这就是我想要的Expected image
对于矩阵情况,我们可以想象如下
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))
图像是
2D matrix visulize
如何对张量进行类似的处理?
以及如何将带有噪声的张量可视化?像矩阵上的噪声
您可以使用 isosurface
和 isocaps
非常接近在 MS Office 中生成的绘图。 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);
我用 scatter3 试过了:
nonzeros = find(a);
[px,py,pz] = ind2sub(size(a),nonzeros);
scatter3(px,py,pz,'k','.');
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
和所有元素支配对角线。
如何在 MATLAB
中显示 a
0 是白色,1 是黑色。我在MS office中绘图,这就是我想要的Expected image
对于矩阵情况,我们可以想象如下
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))
图像是 2D matrix visulize
如何对张量进行类似的处理?
以及如何将带有噪声的张量可视化?像矩阵上的噪声
您可以使用 isosurface
和 isocaps
非常接近在 MS Office 中生成的绘图。 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);
我用 scatter3 试过了:
nonzeros = find(a);
[px,py,pz] = ind2sub(size(a),nonzeros);
scatter3(px,py,pz,'k','.');