答案 0 :(得分:6)
这是一个基于pcolor
的解决方案:
aa = {[1 2],[2 3],[1 2 3 4 5 6],[5],[1]};
n_rows = length(aa);
n_columns = max(cell2mat(aa));
m = zeros(n_rows + 1, n_columns + 1);
row = n_rows;
for i=1:n_rows
m(row, aa{i}) = 1;
row = row - 1;
end
colormap([1 1 1; 1 0.5 0]);
pcolor(m);
它产生以下结果:
答案 1 :(得分:4)
由于在单元阵列中具有不同长度的向量,因此需要在某些循环中进行迭代(或类似的操作,请参见下面使用的cellfun
)。其余的工作是使用所需的背景值初始化某个矩阵,并将该矩阵内的所有“像素”设置为所需的前景值。
这是一个小代码段(已通过Octave 5.1.0和MATLAB Online测试):
aa = {[1 2], [2 3], [1 2 3 4 5 6], [5], [1]}
% Determine needed number of rows and columns
r = size(aa, 2);
c = max(cellfun(@max, aa));
% Initialize and fill matrix
A = 255 * ones(r, c);
for I = 1:r
A(I, aa{I}) = 128;
end
% Show matrix with some colormap and labels
figure('Position', [300, 300, 800, 400]);
imagesc(A, [0, 255]);
colormap('hot');
set(gca, ...
'FontSize', 12, ...
'TickLength', [0 0], ...
'XTick', [1:c], ...
'XTickLabel', [repmat('V', c, 1) num2str([1:c].')], ...
'YTick', [], ...
'XAxisLocation', 'Top');
结果如下:
(代替设置适当的颜色,我只是在这里使用了带有灰度图的灰度图像。)
希望有帮助!