你的问题在于没有很好地理解变量的作用范围(即所谓的“箱子”比喻)。
函数内部是一个与Matlab命令窗口不同的变量容器。
举个例子:
函数文件内部是,
function y1= lnormcdf(x1)
调用函数用
y=lnormcdf(x(i))
这里的y, x变量都在“命令窗口”的变量容器中;y1, x1都在函数本身的变量容器中,它们是不同的变量。当你运行调用函数命令的时候,整个过程是这样的:
1.系统将命令窗口容器中 x(i) 的值传递给 函数本身变量容器中的 x1,
2. 函数内部运算,计算得到y1
3. 将函数内部的y1 的值 传递 回命令窗口中的 y 变量。
至于你的函数写法错误在哪里,是因为函数定义行里面不能用带下标(即 (i) 形式)的变量。