Как можно построить 3D-матрицу в 2D?

#arrays #matlab #plot #matlab-figure

#массивы #matlab #построить #matlab-рисунок

Вопрос:

Я новичок в программировании matlab . У меня есть следующая 3D-матрица

 >> Xc
Xc(:,:,1) =

   -1.6803   -1.6803   -1.6803   -1.6803        
   -1.1803   -1.1803   -1.1803   -1.1803         
   -0.6803   -0.6803   -0.6803   -0.6803        
  -14.1803  -14.1803  -14.1803  -14.1803         
Xc(:,:,2) =

   -1.6803   -1.6803   -1.6803   -1.6803         
   -1.1803   -1.1803   -1.1803   -1.1803         
   -0.6803   -0.6803   -0.6803   -0.6803        
  -14.1803  -14.1803  -14.1803  -14.1803         
.
.
.
.
Xc(:,:,64) =

   -7.5112   -7.5112   -7.5112   -7.5112         
   -4.8926   -4.8926   -4.8926   -4.8926         
   -0.0081   -0.0081   -0.0081   -0.0081         
  -13.7577  -13.7577  -13.7577  -13.7577        
  

как я могу построить первый столбец из всех этих 64 фрагментов в виде тепловой карты, параллельной друг другу?

Ответ №1:

Для построения срезов по второму измерению в 3D

Вы можете сделать это с slice помощью функции. Обратите внимание, что эта функция генерирует surface объекты (например surf , does), в которых индекс строки соответствует оси y, а индекс столбца — оси x. Итак, первые две координаты в Xc должны быть заменены на permute :

 [ii, jj, kk] = ndgrid(-2:.5:2, -2:.8:2, -2:.4:2);
Xc = jj.*exp(-ii.^2-jj.^2-kk.^2); % example adapted from `slice` documentation
slice(permute(Xc, [2 1 3]), [], 1:size(Xc,2), [])
xlabel row, ylabel column, zlabel page
view(67, 31)
colorbar
  

введите описание изображения здесь

Для построения одного среза вдоль второго измерения в 2D

Достаточно проиндексировать Xc во втором измерении, втиснуть в матрицу с permute помощью и использовать imagesc :

 column_index = 4;
imagesc(permute(Xc(:, column_index, :), [1 3 2]))
  

введите описание изображения здесь

Комментарии:

1. Я уже построил данные с помощью slice. Я хочу получить ее в 2D-пространстве, поскольку столбцы в каждом срезе похожи.

2. @Dalek Я не понимаю, что ты имеешь в виду. Но что бы это ни было, эта информация должна была быть в задаче с самого начала, поэтому потенциальные авторы ответов не тратят свое время

3. Столбцы в каждом фрагменте моего набора данных похожи, и для построения всей матрицы требуется пустая трата места и неинформативная информация. Я хотел бы отобразить в 64 столбцах подряд первый столбец каждого среза.

4. Я хотел бы отобразить Xc(:,1,:) в формате фигуры тепловой карты.

5. @Dalek Только это? Затем попробуйте imagesc(permute(Xc(:,1,:), [1 3 2]))