我想将函数应用于多个变量。有没有一个很好的方法来做到这一点?
像:
M = ones(2,2)
N = zeros(3,3)
M = M + 1
N = N + 1
有效,但我想做点什么:
M = ones(2,2)
N = zeros(3,3)
L = ?UnknownStructure?(M, N)
for i = 1:length(L)
L(i) = L(i) + 1
end
或者是否有更好的方法将函数应用于一组变量?
答案 0 :(得分:4)
您可以使用单元格:
M = ones(2,2)
N = zeros(3,3)
L = {M, N};
funct=@(x) x+1;
L2=cellfun(funct, L, 'UniformOutput',false);
答案 1 :(得分:2)
在Matlab中没有引用这样的东西,从某种意义上说,你可以有两个不同的变量名指向同一个矩阵。
但是,你可以有一个矩阵数组。
L = { M, N };
for i = 1:length(L)
L{i} = L{i} + 1
end
我在Octave中测试了这段代码。但请注意:源矩阵M,N不变。
答案 2 :(得分:0)
尝试:
a = ones(2,2)
arrayfun(@(x) 2*x , a)
您可以根据需要制作功能(2*x
)。