我有
基本上,单元阵列的每个单元对应于图像中像素的位置。
我想在3d绘图的xy平面中绘制图像,然后在z平面中绘制单元格数组中的值。每个单元格中的值对应于图像的像素位置和对应的z值。
例如,
cellarray{1} = [10 2056]
cellarray{2} = [18 1928]
图像显示在xy平面上,我想要
我知道我可以使用imagesc(image)
绘制图像,但我不确定如何转换单元格数组中的日期以创建3D绘图,z值高于相应的像素图片。
答案 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