Matlab循环变量(初学者)

时间:2012-01-14 21:41:43

标签: matlab

我想将函数应用于多个变量。有没有一个很好的方法来做到这一点?

像:

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

或者是否有更好的方法将函数应用于一组变量?

3 个答案:

答案 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)。