matlab代码

来源:百度知道 编辑:UC知道 时间:2024/06/24 02:03:55
function p=fun(v,w,a,b)
np_sum=0;
n=length(w);

tau=ones(1,n); % 初始时刻各边上的信息痕迹为1
for i=1:n
ada(i)=v(i)/w(i);
np_sum=np_sum+tau(i)^a*ada(i)^b;
end
for i=1:n
p(i)=tau(i)^a*ada(i)^b/np_sum;
end
本人初学!请问哪位高人能帮我注释一下每句代码的意思!还有为什么运行这个代码会出现如下:
function p=(v,w,a,b)
|
Error: Function definitions are not permitted at the prompt or in scripts.
字样!

出现这中情况,是你没有把函数写在M文件中吧
Function definitions are not permitted at the
prompt or in scripts.
函数要写在m文件里,且必须有合法的开头。
你在file中的new中选择m-file,把你这个函数写进去,保存后再在command window中调用,你的函数没问题,我检验了。
比如你输入
a=2;
b=3;
v=[1,2,3,4,5,6,7,8];
w=[3,5,4,6,3,2,1,7];
aaaaa(v,w,a,b)
就会有结果
Columns 1 through 7

0.0001 0.0002 0.0011 0.0008 0.0123 0.0716 0.9100

Column 8

0.0040

np_sum=0; //变量初始化
n=length(w); //求参数w的长度,赋给n

tau=ones(1,n); % 初始时刻各边上的信息痕迹为1 //ones(1,n)是一个所有元素值为1,长度为n的一维向量
for i=1:n //和c语言的for循环一样,每循环一次n自动加一
ada(i)=v(i)/w(i); //用v和w中对应的元素相除赋给ada
np_sum=np_sum+tau(i)^a*ada(i)^b; //基本的数学运算,其实就是求和
end
for i=1:n //又一个循环
p(i)=tau(i)^a*ada(i)^b/np_sum; //相应的元素数学元算
end