Как построить тензор 3-го порядка в MATLAB - PullRequest
0 голосов
/ 29 мая 2018
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

Тензор a с размером (100,100,100) и всеми элементами доминируют на диагонали.

Как визуализировать a в MATLAB с нулем - белый цвет, а один - черный.Я строю график в MS Office, это то, что я хочу Ожидаемое изображение

Для случая матрицы, мы можем визуализировать следующим образом

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 матрица визуализации

Как сделать аналогичный способ для тензора?

А как визуализировать тензор с шумом?как шум на матрице here

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Я пробовал это с scatter3:

nonzeros = find(a);
[px,py,pz] = ind2sub(size(a),nonzeros);
scatter3(px,py,pz,'k','.');
0 голосов
/ 29 мая 2018

Вы можете довольно близко подойти к графику, созданному в MS Office, используя isosurface и 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);

enter image description here

...