| 查看: 258 | 回复: 2 | |||
| 当前主题已经存档。 | |||
ning903木虫 (职业作家)
笨笨家族小海豚
|
[交流]
【求助】懂MATLAB的前辈
|
||
|
我是一名的学生,一个MATLAB新手,刚学习2个礼拜左右吧,呵呵。这几天碰到了一个问 题,考虑了好久,还是没有解决,所以特向您请教。 函数文件ff1.m 程序如下: function ff1=ff1(x) if x<0 y=-1 elseif x==0 y=0 elseif x>0 y=1 end 在命令窗口调用该程序:ff1(4) 则运行结果为:y=1 但是将程序中的分支语句后面加上“;”即改为如下形式: function ff1=ff1(x) if x<0 y=-1; elseif x==0 y=0; elseif x>0 y=1; end 在命令窗口调用该程序:ff1(4) 则没有任何运行结果。 Question1:我的理解是:加上“;”后,其实是执行了语句,但屏幕不显示运算结果“y=1”。 不知我的理解对否?若不对,麻烦您解答 但是我尝试了另外一个程序,结果就出乎我的意料,我不知该如何解释了。 函数文件ff2.m 程序如下: function ff2=ff2(x) if x<0 ff2=x^2; elseif x>=0&x<2 ff2=2-3*x; elseif x>=2&x<4 ff2=sin(2*x); else ff2=exp(2*x); end 在命令窗口调用该程序:ff2(3) 则运行结果为:ans =-0.2794 Question2: 为何此处就可以显示运算结果?而在ff1.m中就不行? Question3: 为何运算结果赋值给了ans,而不是ff2? 将程序中的分支语句后面的“;”去掉,即改为如下形式: function ff2=ff2(x) if x<0 ff2=x^2 elseif x>=0&x<2 ff2=2-3*x elseif x>=2&x<4 ff2=sin(2*x) else ff2=exp(2*x) end 在命令窗口调用该程序:ff2(3) 则运行结果为:ff2 = -0.2794 ans =-0.2794 我的疑问是:为何运算结果同时赋值给了ff2和ans?而ff1.m中就仅仅赋值给了y?? 我想了好久,始终没想明白,麻烦您解答,谢谢!! [ Last edited by sunxiao on 2009-3-9 at 08:49 ] |
» 猜你喜欢
参与限项
已经有5人回复
推荐一本书
已经有7人回复
有没有人能给点建议
已经有5人回复
假如你的研究生提出不合理要求
已经有12人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复

hitzhang
木虫 (正式写手)
- 仿真EPI: 1
- 应助: 0 (幼儿园)
- 贵宾: 2.15
- 金币: 1376.7
- 散金: 969
- 红花: 8
- 帖子: 862
- 在线: 226.4小时
- 虫号: 390575
- 注册: 2007-06-02
- 性别: GG
- 专业: 无机非金属类电介质与电解
2楼2008-11-20 14:02:05
dnp
荣誉版主 (知名作家)
小木虫浪子
- 应助: 74 (初中生)
- 贵宾: 18.476
- 金币: 18799.9
- 散金: 2040
- 红花: 77
- 沙发: 6
- 帖子: 7304
- 在线: 593.8小时
- 虫号: 437184
- 注册: 2007-08-26
- 性别: GG
- 专业: 生物信息学
- 管辖: 有机交流
★ ★ ★ ★ ★ ★
csfn(金币+6,VIP+0):many thanks,新的计算区建立,今后多来逛逛,交流经验,共享资源:-)
csfn(金币+6,VIP+0):many thanks,新的计算区建立,今后多来逛逛,交流经验,共享资源:-)
|
首先解释一下‘;’在matlab中的作用,就是控制一个m文件中的一段命令在运行之后得到的结果是否要在命令窗口输出,如果一段代码运行结果要在命令窗口输出,则该语句后面就不用加‘;’,正如您上面的运行中显示的,这样就可以回答您的第一和第二个问题。 而对于输出结果为什么是那样,在matlab中是这样的: 当运行一个m文件,而且是带参数输入的,如果m文件中的某一段代码语句后面没有‘;’,则相当于在命令窗口中输入了这段代码,正如提问程序中所言的,有‘;’的,则相当于在命令窗口中输入了: ff2=sin(2*3)(最后一个m文件),结果自然会在命令窗口中显示ff2值,同时,这又是在一个函数即m文件中,因此输入那个命令相当于运行了该程序,matlab会给出整个函数的运行结果。如果m文件命名如您那样的形式,同时在命令窗口中输入时没有按照function后面的形式输入,matlab默认运行结果是在ans中,如果按照function后面的形式全部输入,即以ff2=ff2(3)形式输入,则会将输出结果赋值给ff2(在此建议最好不要将变量名与函数名相同)。因此,就会出现您那样不同的结果。而如果以ff2=ff2(x);的形式在命令窗口中输入,则在命令窗口中没有任何结果显示(除非在m文件中有代码后面没有输入‘;’),但在workspace中有该变量:ff2出现,双击打开就是该函数的运行结果。 看点书,多试试就知道了,这个是最基本的概念和规则。 |

3楼2008-11-20 23:36:19












回复此楼