将矩阵的每一行视为MATLAB函数中的向量

时间:2014-09-09 01:05:39

标签: matlab function matrix vector indexing

假设我有一个nxm矩阵,并希望将每一行视为函数中的向量。所以,如果我有一个添加向量的函数,找到向量的笛卡尔积,或者由于某种原因需要输入几个向量,我希望该函数将矩阵中的每一行都视为向量。

4 个答案:

答案 0 :(得分:0)

这听起来像是Matlab中的一个非常简单的操作。您可以使用ith访问矩阵A的{​​{1}}行。例如,要添加行A(i, :)i,您可以执行j

答案 1 :(得分:0)

给定nxm矩阵A:

  1. 如果要编辑单个列/行,可以使用以下语法:对于第i列,A(:,i),对于第i行,使用A(i,:)。
  2. 如果要从列/行i编辑到列/行j,可以使用该语法:A(:,i:j)或A(i:j,:)
  3. 如果你想从倒数第二列/行编辑(即)到最后一列,你可以:A(:,end-1:end)或A(end-1:end,:)
  4. 编辑: 我无法在上面添加评论,因为我没有50分,但你应该发布功能setprod。我认为你应该能够做你想做的事情,通过迭代你作为参数传递的矩阵,使用for-next语句。

答案 2 :(得分:0)

我认为你将不得不循环:

输入

M = [1 2; 
     3 4; 
     5 6];

步骤1:生成所有可能行对(行索引号)的列表

n = size(M,1);
row_ind = nchoosek(1:n,2)

步骤2:循环遍历这些索引并生成产品集:

S{n,n} = []; //% Preallocation of cell matrix
for pair = 1:size(row_ind,1)
    p1 = row_ind(pair,1);
    p2 = row_ind(pair,2);
    S{p1,p2} = setprod(M(p1,:), M(p2,:))
end

答案 3 :(得分:0)

使用以下两个步骤将矩阵转换为行向量列表:

  1. 使用mat2cell将矩阵转换为矩阵行的单元格数组。
  2. 使用comma-separated list单元格内容从单元格数组生成linear indexing
  3. 示例:让

    v1 = [1 2];
    v2 = [10 20];
    v3 = [11 12];
    M = [v1; v2; v3];
    

    fun成为一个接受任意数量向量作为输入的函数。然后

    C = mat2cell(M, ones(1,size(M,1)));
    result = fun(C{:});
    

    result = fun(v1, v2, v3)相同。