2012-01-14 86 views
2

我想將一個函數應用於多個變量。有沒有一個很好的方法來做到這一點?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 

還是有更好的辦法完全是一個函數應用於一組變量?

+0

我想你可以使用'evalin',但我不會推薦它。 – 2012-01-15 02:01:34

回答

4

您可以使用細胞:

M = ones(2,2) 
N = zeros(3,3) 
L = {M, N}; 
[email protected](x) x+1; 
L2=cellfun(funct, L, 'UniformOutput',false); 
0

嘗試:

a = ones(2,2) 
arrayfun(@(x) 2*x , a) 

你可以做任何你想要的功能()。

+0

我仍然沒有看到如何將這個函數應用到幾個這樣的矩陣。 – rallen 2012-01-14 21:54:21

2

有是在Matlab,引用的,你可以有指向同一矩陣兩個不同的變量名的感覺沒有這樣的事情。

但是,您可以有一個矩陣數組。

L = { M, N }; 
for i = 1:length(L) 
    L{i} = L{i} + 1 
end 

我在Octave中測試了這段代碼。但是注意:源矩陣M,N不會因此而改變。