矩阵维度必须一致,索引超出矩阵维度

时间:2017-01-24 08:53:18

标签: matlab matrix indexing plot matlab-figure

我有以下代码来定位一些子图:

fig = figure;
fig.Units = 'centimeters';
fig.Position(3:4) = [25  25];
plotPositions = [ 3, 21,  7,  7;
                 12, 21,  7,  7;  
                ];
nPlots=length(plotPositions);  % shorthand variable for convenience
hAx=zeros(nPlots,1);           % preallocate array for axes/subplot handles
for i = 1:length(plotPositions)
    plotHandle = subplot(3, 2, i);
    plotHandle.Units = 'centimeters';
    plotHandle.Position = plotPositions(i,:);
    hAx(i)=subplot(3, 2, i);  
    axis(hAx(i),[ -300 300 0 150]); %
end

如果我使用

plotPositions = [ 3, 21,  7,  7;
                 12, 21,  7,  7;
                  3, 12,  7,  7;
                 12, 12,  7,  7;
                  3,  3,  7,  7;
                 12,  3,  7,  7];

它有效,但如果使用

plotPositions = [ 3, 21,  7,  7;
                 12, 21,  7,  7;  
                ];

它不起作用,我收到错误:

Matrix dimensions must agree.

Index exceeds matrix dimensions.

发生了什么事?

1 个答案:

答案 0 :(得分:1)

您不应该使用函数length,而是使用函数size(...,1)来计算plotPositions的行数。 length实际上是max(size(vec)),在"工作"中6行数,正确)大小写,以及4列的数量)在非工作状态中。

因此,在2 nd 的情况下,你实际上是在尝试访问"不存在"行,所以MATLAB抱怨......