English 中文(简体)
• 如何在MATLAB的住所中指定一个功能?
原标题:How to call a function in a for loop in MATLAB?
  • 时间:2009-10-14 16:56:30
  •  标签:

我愿在此空档中提一页(功能):

global m, r
m = 2;
for n = 2:10;
  for r1 = 0:n-m;
    r2 = n-m-r1;
    r = [r1,r2];   
    [Call the function here?????????]
  end
end

这项职能:

function main
  x0 = [-0.5403,0.5471];
  fsolve(@fcn,x0)

function z = fcn(X)
  rand( twister ,5409);
  global m, r
  a = rand(m,1);
  for i = 1:m
    sm(i) = 0.0;
    for l = m-i+1:m
      sm(i) = sm(i)+r(l);
    end
    s = 1.0/(i+sm(i));
    g(i) = (a(i))^s;     
  end
  prod = 1.0;
  for k = 1:m
    prod = prod * g(m+1-k);
    u(k) = 1.0-prod;
    x(k) = (sqrt(3)/pi)*log(u(k)/(1-u(k)));
  end
  sum = 0;
  sum1 = 0;
  sum2 = 0;
  for j = 1:m
    sum = sum+(r(j)+2)*(1/(1+exp((-pi/sqrt(3))*((x(j)-X(1))/X(2)))));
    sum1 = sum1+(r(j)+2)*((x(j)-X(1))/X(2))*(1/(1+exp((-pi/sqrt(3))*((x(j)-X(1))/X(2)))));
    sum2 = sum2+(x(j)-X(1))/X(2);
  end
  z(1) = pi/(X(2)*sqrt(3))*(-m+sum);
  z(2) =(-1/X(2))*(m+(pi/sqrt(3))*(sum2-sum1));

非常感谢您的帮助。

问题回答

<条码>main和fcn 应在称为“主人”的档案中保存。 您必须保证,这份档案要么载于您目前的工作名录,要么载于, 部分载于MATLAB 途径。 (如https://stackoverflow.com/users/97160/amro>的评论所述) Amro,使MATLAB能够进入。 由于<代码>main不要求任何投入论据,没有产出论据,因此你只能以下列任何一种方式提出:

main
main;
main()
main();

如果你有主要职能的话。 页: 1

Main.m

function out = main(in)
% blah blah blah

您将称职。

in = 2;
out = main(in)

这是否有意义?

在我个人上,我将在没有主(主)部分的情况下创建你的职能。

create a file called fcn.m with your function fcn in it, make sure it s in your working directory or in your matlab path and then call it inside your loop.

addpath(genpath( /the/path/to/your/function/ );
global m, r
m = 2;
for n = 2:10;
  for r1 = 0:n-m;
    r2 = n-m-r1;
    r = [r1,r2];   
    z=fcn(r)
  end
end




相关问题
热门标签