построение диагональных срезов трехмерной матрицы с изображениями c () - PullRequest
0 голосов
/ 29 января 2020

Я новичок в Matlab, и мне действительно нужна помощь со следующей проблемой:

У меня есть матрица 255 x 255 x 255, и я хотел бы построить ее 2D-срезы с изображениями c () ,

Я понимаю, что для построения срезов, параллельных плоскостям x, y, z, я мог бы просто указать срез с чем-то вроде матрицы (:,:, i), но как мне это сделать, если я хочу построить срез x = y или вообще любой срез x = n * y?

Я имею в виду, что нужно интерполировать матрицу на эти плоскости и затем извлечь срез, но я немного застрял на как.

Специально для среза x = y я пытался построить 2D-матрицу, используя команду diag () для каждого среза z и устанавливая new_matrix = matrix (i, i, :) для i = 1: 255, но, похоже, это не сработало.

1 Ответ

3 голосов
/ 29 января 2020

за это Matlab дал вам slice!

[X,Y,Z] = meshgrid(-5:0.2:5);
V = X.*exp(-X.^2-Y.^2-Z.^2);

[xsurf,ysurf] = meshgrid(-2:0.2:2);
zsurf = xsurf/2+ysurf/2;
slice(X,Y,Z,V,xsurf,ysurf,zsurf)

enter image description here

, и вы можете играть с камерой view угол для эмуляции ощущения imagesc, например, попробуйте view(0, 90) после кода, который я написал ...

Кстати ... если вы настаиваете на выполнении вырезки и использовании изображений c так, как вы хотели, вот как в примере, который я привел:

for n=1:size(X,1)
    D(:,n)=squeeze(V(n,n,:));
end
imagesc(D)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...