将不同的函数应用于矩阵的不同列

时间:2012-01-23 11:49:37

标签: arrays matlab

我有一个包含2列的MATLAB矩阵,我想在其中为每列应用单独的函数。具体来说,我想添加5到1列,将3添加到另一列。

例如,

a = 0 4
    2 5
    3 7
    . .
    . .
    . .

会变成

a = 5 9
    7 10
    8 12
    . .
    . .
    . .

我知道我可以使用简单的a = a + x相同的值添加到两个列中,但在这种情况下,我尝试分配不同的数字以添加到每一方。

3 个答案:

答案 0 :(得分:4)

您可以轻松添加以下数字:

a = ones(5, 2)
b = [2 5]
c = bsxfun(@plus, a, b)

会给你:

a =
     1     1
     1     1
     1     1
     1     1
     1     1

b =
     2     5

c =
     3     6
     3     6
     3     6
     3     6
     3     6

bsxfun还提供了更多操作,请点击此处:http://www.mathworks.de/help/techdoc/ref/bsxfun.html

答案 1 :(得分:1)

另一种方法,这次使用repmat

>> a = [0 4; 2 5; 3 7; 1 2]

a =

 0     4
 2     5
 3     7
 1     2

>> a = a + repmat([5, 3], size(a, 1), 1)

a =

 5     7
 7     8
 8    10
 6     5

答案 2 :(得分:0)

您可以按照以下方式执行此操作

a(:,1)=a(:,1)+5;
a(:,2)=a(:,2)+3;

修改 更多一般代码:D

function [Result]=AddColumn(A, B)
    [aRows aCols]=size(A);
    [bRows bCols]=size(B);

    if(aCols~=bCols || bRows>1)
        ErrorMessage='not Matched'
        return;
    end;

    B=B'
    X=B*ones(1,aRows);
    X=X';
    Result=A+X;
end