2013-08-22 34 views
0

我需要運行一個特定函數4次,每次傳遞新參數(從數組中獲取 )並將結果保存在另一個函數中數組在每次迭代之後。從一個數組傳遞給MATLAB函數參數並使用FOR循環保存函數結果

這裏是我的功能:

function VD (x,y,z) 
(2*x*y*z)/1000 

這裏是我的陣列,值:

x = [1,2,3] 
y = [4,5,6] 
z = [7,8,9] 

這裏就是我得到了一個錯誤:

for i=1:4 
result{i} = VD(x(i),y(i),z(i)); 
end 

錯誤 - 下標索引必須是真正的正整數或邏輯。

我想有陣列結果與4個值,其中每個值是VD函數返回的結果。

希望它很清楚。

謝謝。

回答

1

可以完全避免使用循環:

x = [1,2,3] 
y = [4,5,6] 
z = [7,8,9] 

result = 2 * x .* y .* z ./ 1000; 
+0

沒有'。','*'將執行矩陣乘法。試試以下來看看我的意思:A = rand(4); B =蘭特(4); A * B,A * B –

1

你的函數沒有返回值。它只是將結果打印到屏幕上。用

替代你的函數定義
function r = VD(x,y,z) 
r = (2*x*y*z)/1000; 

可能會有所幫助。但是,執行此特定任務的方法更爲有效 - 請參閱Gordon關於如何進行矢量化的答案。

相關問題