【问题标题】:Is there a setting that controls the default shape of vectors?是否有控制矢量默认形状的设置?
【发布时间】:2019-12-26 04:37:00
【问题描述】:

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

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

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

【问题讨论】:

  • 如果我转置元胞数组 dd=dd' 代码工作正常,他开始遇到我的问题。
  • 不,没有这样的设置。请分享创建此元胞数组的代码的最小版本。也许你们中的一个人有其中一项被遮蔽的功能。

标签: arrays matlab for-loop vector cell


【解决方案1】:

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

  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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2015-01-15
    • 2014-10-29
    • 2013-08-13
    • 1970-01-01
    相关资源
    最近更新 更多