У меня есть сохраненный файл Matlab .fig
с изображением, и я открываю рис с помощью openfig
. Я спрашиваю, как я могу скопировать значения фигуры в матрицу (скажем, img
, которая равна 480x640 double
), чтобы начать обработку. Если кто может посоветуйте.
Скопируйте значения открытой фигуры в Matrix Matlab
Ответы (1)
Довольно просто. Предполагая, что ваша фигура открыта, сначала вам нужно убедиться, что у вас есть дескриптор текущей фигуры, поэтому выполните:
h = gcf;
Данные, изображенные на рисунке, обычно являются дочерними элементами объекта axes
. Сам объект осей является дочерним элементом фигуры, поэтому вам необходимо получить доступ к ряду иерархических элементов, прежде чем добраться до того, что вам нужно. Таким образом, вам нужно получить дескрипторы axes
, а затем получить дочерние элементы дескрипторов axes
. Данные, которые отображаются на графике, обычно являются «потомками» объекта Axes. Объекты осей сами являются дочерними элементами фигуры. Вы можете спуститься по их иерархии следующим образом:
axesObjs = get(h, 'Children'); %axes handles
dataObjs = get(axesObjs, 'Children'); %handles to low-level graphics objects in axes
Открыв вашу фигуру, я вижу, что ваши данные имеют тип Image
. Чтобы получить доступ к данным Image
, вы хотите получить доступ к полю CData
, поэтому вам нужно сделать следующее:
data = get(dataObjs, 'CData');
data
теперь должен содержать данные вашего изображения. Поэтому вот полный код, чтобы вы могли скопировать и вставить его в MATLAB:
openfig('input.fig')
h = gcf;
axesObjs = get(h, 'Children');
dataObjs = get(axesObjs, 'Children');
data = get(dataObjs, 'CData');
Вышеупомянутое работает до MATLAB R2013b. Если вы используете MATLAB R2014a и выше, вместо функции get
используется точечная нотация, и поэтому:
openfig('input.fig')
h = gcf;
axesObjs = h.Children;
dataObjs = axesObjs.Children;
data = dataObjs.CData;
colormap(jet)
, где учитываются только ненулевые значения, чтобы цветовая полоса была правильной?
- person Tak; 06.05.2015
NaN
, затем примените к нему цветовую карту jet
. Сделайте что-то вроде этого: data(data == 0) = NaN; imagesc(data); colormap(jet); colorbar;
.
- person rayryeng; 06.05.2015
figure values
? - person scmg   schedule 06.05.2015