matlab怎么将循环变量作为函数的输入值

我的函数本身是可用的,但是使用了for循环的循环变量为自定义函数的输入变量赋值,就报错
function [lengthp] = workspace(il,ia,ia0)
syms phia thetaa;
global l a a0;
l=il;
a=ia;
a0=ia0;
for phia=0:18:90
for thetaa=0:18:90
lengthp=disc(phia,thetaa);
end
end
end

disc函数很复杂,就不粘上了,不过运行disc(36,36)一点问题都没有,是我外部的这个函数弄错了么?

workspace(15,6.5,4.4)报错
disc函数得到的是一个1*4的向量,怎么把workspace运行得到的一系列的向量保存在同一个数组里?

如果进行m文件编程,而不知道输入参数个数
采用:
function y=y(varargin)
在这里我简单描述一下varargin的相关使用
(1)对输入参数个数的判断采用:
比如
y(y1,y2)
则nargin=2;
所以你可以这样编程:
if nargin==2
y=y(y1,y2);
.....
end
(2)当使用varargin的时候
如果想要得到参数的值,
比如y=y(y1,y2)调用函数是,
在运算时候想要得到y1的值
则varargin{1}就是你想要得到的,
依此类推,varargin{2}就是y2的值
(3)还有相对应的参数varargout和nargout,想要灵活的进行m文件的编程
这两个参数好好研究一下
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-07-03

你好,我检查了,写法没问题。应该是你的disc函数,出现了问题,或者除了0,或者其他。


其中,也提一些修改建议:

syms phia thetaa;这句不需要,matlab不需要定义。

保存为数组方法:

function lengthp= workspace11(il,ia,ia0)
global l a a0;
l=il;
a=ia;
a0=ia0;
flag=1
  for phia=0:18:90
       for thetaa=0:18:90
         lengthp(flag)=disc11(phia,thetaa);
       end
       flag=flag+1;
  end
end

函数名字建议不采用matlab敏感的名字,disc,workspace都是matlab自有的。

希望对你有帮助。

追问

BTW,这个代码怎么直接粘贴上去,有底纹的?

追答

建议你试试下面这些代码,看能否计算。
l=15;
a=6.5;
a0=4.4;
disc(0,0)

这个应该是你的disc赋值,不能计算全部的值,有些值计算不出来。
最右边有个代码语言

追问

好像真是0不行哎,我刚才试了,disc(0,0)也报错

追答

由于看不到你方程,你好好检查一下方程,应该是某些地方,不能用0计算。
或者你可以这样:
for phia=0.001:18:90.001
for thetaa=0.001:18:90.001

以一个很小的数起步,试试

追问

好像真是0不行哎,我刚才试了,disc(0,0)也报错。
貌似是存储位数不够,因为我里面有个语句是ra=l/thetaa,thetaa 是角度制(自带转换成弧度制)

本回答被提问者采纳