在matlab中为列分配值

时间:2014-03-23 00:05:15

标签: matlab

在matlab中

a = zeros(1,2); b= ones(2,1)那么它是错的a + b;

X=zeros(2,2), X(:,1)=a效果很好,为什么?

2 个答案:

答案 0 :(得分:1)

好问题。确切的答案可以在页面底部附近的Matlab site找到:

  

分配索引
将一个矩阵的值分配给   另一个矩阵,你可以使用任何索引样式   这个部分。矩阵赋值语句也具有以下内容   要求。

     

在作业A(J,K,...) = B(M,N,…)中,下标J, K, M, N,等。   可以是标量,向量或数组,只要满足以下所有条件   是的:

     
      
  • 为B指定的下标数,不包括尾随   下标等于1,不超过ndims(B)。
  •   
  • 数量   为A指定的非标量下标等于非标量的数量   为B指定的下标。例如,
    A(5, 1:4, 1, 2) = B(5:8)
    是   有效,因为等式的两边都使用一个非标量下标。
  •   
  • 为A指定的所有非标量下标的顺序和长度   匹配为B指定的非标量下标的顺序和长度   例如,左A(1:4, 3, 3:9) = B(5:8, 1:7)
    是有效的,因为双方都有效   等式(忽略一个标量下标3)使用一个4元素   下标后跟7个元素的下标。
  •   

当您查看示例时,它会遵循上面的最后一点:尽管您要分配X(:,2)这是2x1列向量,右侧是{{1行向量,规则“为A指定的所有非标量下标的顺序和长度匹配为B指定的非标量下标的顺序和长度。”

请注意,当您想添加两个矩阵时,情况并非如此 - 在这种情况下,它们实际上需要具有完全相同的形状(因此您无法添加1x2和{{1 }} matrix,尽管两者都有两个元素。)

答案 1 :(得分:0)

使用" X(:,1)= b",您要求MATLAB将列向量b的值复制到X的第一列.b有两行,X也是如此。所以价值分配有效。

对于" a + b",矩阵 - 矩阵加法需要尺寸的精确匹配。