函数:
- % the spine function of MacCulloch
- function f=f(m,d,j)
- k=length(d);
- if j==1
- if m>=d(1) && m<=d(2)
- f=m-(m^2)/(2*d(2));
- elseif m>d(2) && m<=d(k)
- f=d(2)/2;
- else
- error('the first step is wrong')
- end
- elseif j>=2 && j<=k-1
- if m>=d(1) && m<=d(j-1)
- f=0;
- elseif m>d(j-1) && m<=d(j)
- f=(m-d(j-1))^2/(2*(d(j)-d(j-1)));
- elseif m>d(j) && m<=d(j+1)
- f=(d(j)-d(j-1))/2+(m-d(j))-(m-d(j))^2/(2*(d(j+1)-d(j)));
- elseif m>d(j+1) && m<=d(k)
- f=(d(j+1)-d(j-1))/2;
- else
- error('the second step is wrong')
- end
- elseif j==k
- if m>=d(1) && m<=d(j-1)
- f=0;
- elseif m>d(j-1) && m<=d(j)
- f=(m-d(j-1))^2/(2*(d(j)-d(j-1)));
- else
- error('the third step is wrong')
- end
- else
- error('you input the wrong number')
- end
赋值:
m=[1,2,3,4,5,6,7,8,9,10];
d=[0;1;4;8];
j=2;
f(m(2),d,j)
得到结果:1.3333.
使用循环后:
f=0;
for q=1:10
f=f+f(m(q),d,j);
end
报错:??? Subscript indices must either be real positive integers or logicals.
再单独运行:f(m(2),d,j)
报错:??? Index exceeds matrix dimensions.
配置:
matlab7.11.0(R2010b),32位。电脑:win7 (32位)。
请问各位大侠,问题出在哪里呢?m是1*10的向量,循环是从第1个到第10个值,下标是这里出现问题的吗?另外如果设置的函数有问题,那么在第一次单独运行f(m(2),d,j)是正常的,循环过后再运行却报错。我是程序菜鸟,这个还是我个人意义上的第一次编程,请大家费心了。谢谢各位了


雷达卡



京公网安备 11010802022788号







