首页 > 解决方案 > 是否有控制矢量默认形状的设置?

问题描述

当我和我的同事运行相同的代码时,他得到一个行单元格数组 ( 1x10),而我得到一个列单元格数组 ( 10x1)。是否有我们可能拥有的设置或偏好来指定元胞数组的默认结构(高与宽)?

我们已经比较了设置和输出,并且都在使用 R2018a。

形状不匹配会导致Index exceeds array bounds错误。

标签: arraysmatlabfor-loopvectorcell

解决方案


根据我的经验,最好不要假设输入的形状,而是要确保它是您所期望的(请参阅:防御性编程)。在您的情况下(向量)有两种前进方式:

  1. 形状检查:

    assert( isrow(A), 'Input must be a row vector!');
    
  2. 形状操作:

    % if you need it to be a column:
    colA = A(:);
    colA = reshape(A, [], 1);
    
    % if you need it to be a row:
    rowA = A(:).';
    rowA = reshape(A, 1, []);
    

在“检查”替代方案中,您会收到有关输入形状不正确的警告,而在“操作”替代方案(我更喜欢)中,它只会处理您给它的任何形状。

另见: validateattributes


推荐阅读