我有一个包含2列的MATLAB矩阵,我想在其中为每列应用单独的函数。具体来说,我想添加5到1列,将3添加到另一列。
例如,
a = 0 4
2 5
3 7
. .
. .
. .
会变成
a = 5 9
7 10
8 12
. .
. .
. .
我知道我可以使用简单的a = a + x
将相同的值添加到两个列中,但在这种情况下,我尝试分配不同的数字以添加到每一方。
答案 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