分类x轴和单元阵列数据的Matlab绘图

分类x轴和单元阵列数据的Matlab绘图,matlab,plot,cell-array,Matlab,Plot,Cell Array,我有一个带有嵌套单元格数组的单元格数组: 我想按行绘制每个嵌套单元格数组。但并非所有嵌套单元阵列都是8x1。我需要将empy值填充为NaN或零,但仍然能够连续绘制数据 第7-9列示例: Column7 Column8 Column9 1 1 1 2 2 2 3 NaN NaN 4

我有一个带有嵌套单元格数组的单元格数组:

我想按行绘制每个嵌套单元格数组。但并非所有嵌套单元阵列都是8x1。我需要将empy值填充为NaN或零,但仍然能够连续绘制数据

第7-9列示例:

Column7   Column8   Column9
1          1           1                       
2          2           2                        
3        NaN          NaN
4        NaN          NaN
5        NaN          NaN
6        NaN          NaN
我想按行绘制,第1行是(1,1,1),第2行是(2,2,2),第3行是(3,NaN,NaN),依此类推; 因此,类别7在垂直方向上的值为1-6。类别8在垂直方向上具有值1到NaN,但仅打印值1和2

我希望第1行的值通过以下行连接:

例如:

figure
hold on
cellfun(@(C1) plot(cell2mat(C1,:), 'o-'), C);
% setup axes
xlim([0, 15]);
ax = gca;
ax.XTick = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
ax.XTickLabel = {'1','2','3','4','5','6','7','8','9','10','11','12','13','14','15'};

最简单的方法是构建一个二维矩阵,其中包含数据(如果存在)和其他位置的NAN。Matlab中的大多数绘图命令都忽略了NAN

要将单元格数组转换为矩阵,可以创建一个仅包含NaN的矩阵,并逐列填写数据显示。比如,

% Create dummy data
C = {[1;2;3;4], [7;7;8], [5;4]};
% Find the maximum number of rows possible across all cells
Nrows = max(cellfun(@length, C));
% Create matrix full of NaNs
M = nan(Nrows, length(C));
% Loop cells
for i = 1 : length(C)
    % Pull the contents of this cell
    Content = C{i};    
    % Fill this column with as many rows as we found
    M(1 : length(Content), i) = Content;
end
结果矩阵
M
包含
C
中每个单元格的值,每列一个。然后,您可以简单地用

plot(M)