绘制xy平面中的图像并从z轴上方的单元阵列中指出:MATLAB

时间:2017-07-03 03:11:18

标签: image matlab matrix plot graph

我有

  1. 保存为像素数组的图像。
  2. 具有与图像中像素数相同的单元格数的单元阵列。
  3. 基本上,单元阵列的每个单元对应于图像中像素的位置。

    我想在3d绘图的xy平面中绘制图像,然后在z平面中绘制单元格数组中的值。每个单元格中的值对应于图像的像素位置和对应的z值。

    例如,

    cellarray{1} = [10    2056]
    cellarray{2} = [18    1928]
    

    图像显示在xy平面上,我想要

    • 在图像的像素1上方绘制的点,z值为2056.
    • 在图像的像素18上方绘制的点,z值为1928.

    我知道我可以使用imagesc(image)绘制图像,但我不确定如何转换单元格数组中的日期以创建3D绘图,z值高于相应的像素图片。

1 个答案:

答案 0 :(得分:0)

假设您有一些单元格数组cellarray,其中包含16个[pixel number, z value]对。这两行设置了随机演示...

% Set up random cell array, with 1x2 arrays in each cell
% First number in each array is unique pixel number, second is z value
z = num2cell(randi(64,4,4));
cellarray = cell(4,4); for ii = 1:16; cellarray{ii} = [ii z{ii}]; end;

现在我们要绘制这个,所以将它转换为16x2矩阵,其中每一行是1x2单元格之一:

% Use the colon (:) to make cell array one column, use cell2mat to convert to matrix
g = cell2mat(cellarray(:));

要从索引获取2D x和y坐标,可以使用ind2sub

[x, y] = ind2sub([4, 4], g(:,1)); % Change [4, 4] to the size of your image

现在你可以使用plot3来绘制这些,如果你想保留以前的情节(如你的图像),请坚持:

hold on % to retain previous plot, like from imagesc
plot3(x, y, g(:,2), '.'); % Using the dot to specify points not a line