s20070384 发表于 2008-9-24 20:30

关于function的问题

各位大家好:
      我是新手,我想问一个关于function的问题,在看过一个相关贴子后,
原帖:如果你编写的函数带有输入参数(例如 x ),则跟其他语言一样,这只是形式参数,所以不能通过直接运行该函数(或者m文件)来测试,这样会出现 ??? Input argument "x" is undefined. 的错误。一定要从其他地方(如命令窗口或者其他函数对其调用)来传递真实值,此时 x 才是实际参数。如果你有C语言的编程经验,命令窗口就相当于main函数;如果没有,以下是举例:
myPlus.m:
CODE:
function d = myPlus(a,b)
d = a + b;

命令窗口:
CODE:
>> x = 2;
>> y = 5;
>> z = myPlus(x,y)


问题:我在MATLAB里试过了,这个程序不能用呀,function的名字和M文件名一样,形参和实参也分开了,但是还是提示还是提示有错。
程序如下
%function 中的形参与实参的问题
function d = myPlus(a,b)
d = a + b;
x=1;
y=2;
z=myPlus(x,y)
提示:
??? Input argument "a" is undefined.
Error in ==> myPlus at 3
d = a + b;
还有:
function c = f2c(f)   
f = input('Input Fahrenheit temperature:');
c = 5*(f-32)/9;
clear;
y = input('Input Fahrenheit temperature:');
x = f2c(y)
在MATLAB中command windows中一直是:
Input Fahrenheit temperature:67
Input Fahrenheit temperature:2
要求输入值,但又不计算结果,还跳不出循环,不知道怎么改!
我知道都是小问题,不过弄了一天也没弄出来,希望大侠指点一下,我好赶紧进入下一个问题.谢谢!

messenger 发表于 2008-9-24 21:13

没问题呀

x=1;
y=2;
z=myPlus(x,y)

z =

   3

s20070384 发表于 2008-9-25 09:25

感谢回复,还有点不解!

首先感谢你的帮助,还有点小问题有点不理解!
我又试了试,在M文件中输入
function d = myPlus(a,b)
d = a + b;
然后在command windows中输入
> x=1;
y=2;
z=myPlus(x,y)
的确能得到:
z =
   3
但我想要在M文件中输入
function d = myPlus(a,b)
d = a + b;
x=1;
y=2;
z=myPlus(x,y)
得到
z =
   3
这样我就可以在M文件中编写一个更长,更多运算的程序,而不是将整个function的运算放到M文件外面做,这样可以吗?再次谢谢!

s20070384 发表于 2008-9-25 09:29

还有

还有就是虽然有
x=1;
y=2;
z=myPlus(x,y)

z =

   3
结果正确!但是还是有报错信息这是为什么呀?如下:
??? Input argument "a" is undefined.

Error in ==> myPlus at 3
d = a + b;

科技在线 发表于 2008-9-25 10:39

结果是这正确的啊
真的搞不懂了

zhong84 发表于 2008-9-25 15:22

可以这样:

function filename()%定义无返回值函数
x=1;
y=2;
z=myplus(x,y);
return;

function y=myplus(a,b)
y=a+b;
return;

[ 本帖最后由 zhong84 于 2008-9-25 15:31 编辑 ]

s20070384 发表于 2008-9-25 15:32

谢谢

最后我弄明白了,呵呵,人笨没办法,还是感谢各位的帮助,谢谢!
页: [1]
查看完整版本: 关于function的问题