东山客 发表于 2009-11-20 21:25

关于主程序与子程序写在一个m文件里

为了方便,我想把子程序都放在主程序里面。
根据我搜到的帖子,说是写成下面形式即可,主要是在主程序也加上function
function zz
code...

function yy= fun(...)
code
return

但是我这样还是出错,错误出现在主程序的function处,显示为:

function definitions are not permitted at the prompt or in scripts.

希望帮忙,非常感谢。

ChaChing 发表于 2009-11-20 22:04

回复 楼主 东山客 的帖子

个人水平专业有限, 建议楼主说清楚些!
给出简化后的程序, 及怎呼叫!

东山客 发表于 2009-11-20 22:13

我的意思是,我在主程序的第一行加了“function 文件名”命令,在后面的子程序开头也加了function。这样还是出错,
显示是function definitions are not permitted at the prompt or in scripts.

希望我说清楚了。谢谢。

bcyangbc 发表于 2009-11-20 22:17

楼主的意思是把主程序和子程序放在同一个m文件里,然后运行主程序的时候会调用子程序的内容?
这是可以的,看看这个测试文件,文件内容如下:
function zz()
disp('main function --> zz');
pp();
end
function fun=pp()
disp('Sub funciton pp called');
end
运行结果:
>> zz
main function --> zz
Sub funciton pp called

ChaChing 发表于 2009-11-20 22:21

回复 板凳 东山客 的帖子

个人水平专业有限, 感觉还是没说明白!

还好我试出LZ的错误讯息了!
LZ是否直接将程序复制至command win执行!? 那不行!
是要存成一m-function档案后, 再呼叫!

[ 本帖最后由 ChaChing 于 2009-11-20 22:33 编辑 ]

东山客 发表于 2009-11-20 22:29

问题解决了。谢谢。
接着以上面例子为例
我错误的原因是function zz()上一行加了句clc;
这样就总是出错。加在function zz()下一行就没有问题。

这样看来,function zz()必须是第一行?

ChaChing 发表于 2009-11-20 22:38

回复 6楼 东山客 的帖子

个人水平有限, 若LZ一开始给齐完整格式:出错代码和出错提示!
可能大家较容易debug

东山客 发表于 2009-11-20 22:43

不好意思。本人编程能力一般。确实没想到是那句clc的问题,看了上面的例子,对应着逐渐注释程序才找到的错误。

ChaChing 发表于 2009-11-20 23:56

回复 8楼 东山客 的帖子

没关系! 大家互相从错误中学习经验!
页: [1]
查看完整版本: 关于主程序与子程序写在一个m文件里