2010-09-09 67 views
3

我想在for循環中的每個步驟對MATLAB函數進行一些細微更改。我的功能太複雜,無法匿名編寫。有沒有辦法在每一步更改m文件功能?更改循環中的Matlab函數

附加信息: 我的功能是一個有8個輸入和無限多個解決方案的方程。我想要設置7個輸入,然後用fsolve找到第8個。在for循環中改變這些7個固定輸入中的一些,以便我可以創建這個方程的解的圖形。

+0

你能提供有關改變你的類型的任何詳細d喜歡做什麼? – 2010-09-09 01:14:12

+1

你不需要爲這類問題使用匿名函數!只使用一個包裝函數來設置你的8輸入函數 – Mikhail 2010-09-09 12:17:15

回答

5

讓我們用兩個輸入作爲例子,其中您想要更改一個輸入。既然你聲稱你的函數真的很複雜,我們把它寫入一個名爲complicated.m的文件中,我們將其保存在Matlab路徑中。

function out = complicated(v1,v2,x) 

out = v1*x-v2*x.^2; 

說,我們要改變v1v2在循環每次迭代,找到多項式的根,並繪製它

figure,hold on 
for v1 = 1:5 
    for v2 = 1:5 
     %# define the function 
     myFun = @(x)complicated(v1,v2,x); 
     %# find the roots 
     fzero(myFun,1) 
     %# plot the function 
     plot(-5:0.1:5,myFun(-5:0.1:5)) 
    end 
end