我的函数本身是可用的,但是使用了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运行得到的一系列的向量保存在同一个数组里?
你好,我检查了,写法没问题。应该是你的disc函数,出现了问题,或者除了0,或者其他。
其中,也提一些修改建议:
syms phia thetaa;这句不需要,matlab不需要定义。
保存为数组方法:
函数名字建议不采用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 是角度制(自带转换成弧度制)