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