声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3061|回复: 3

[综合讨论] 呼叫函数的表达方式

[复制链接]
发表于 2009-1-9 13:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
在另一帖http://forum.vibunion.com/thread-75433-1-1.html
回覆了网友, 怕说不清再发帖, 试着说明清楚!
不确定是否已经有类似帖子, 若有的话再麻烦删除!
时常用matlab的使用者, 是否发现有些指令好像不需要括号'()'传递引数, 例如load, save, help, format…, 有些则一定得使用括号传递引数, 例如plot, abs, ones, fft…, 为何有这些区别差异? 试着说说, 不对请指正! 谢谢!
1.原则上matlab函数的输入引数, 一般都是会使用括号(), 如plot(x,y)…, 即所谓函数格式
2.若函数的所有输入引数都为字串(char)变数, 而且无任何输出引数, 则允许可以不使用括号, 即所谓命令格式
例如: grid on或grid 'on' 等同grid('on')
format short e或format 'short' e或format short 'e' 或format 'short' 'e' 等同format('short', 'e')
3.若不使用括号传递引数, 则该引数会自动被当作字串变数
例如: disp(aa)的输入引数aa允许是数字变数或字串变数, 但若无括号disp aa则一律被视为字串变数; 比较以下各指令之间的差异
>> aa=[1:5]; bb='abc'; whos
  Name      Size                    Bytes  Class
  aa        1x5                        40  double array
  bb        1x3                         6  char array
Grand total is 8 elements using 46 bytes
>> disp(aa)
     1     2     3     4     5
>> disp('aa')
aa
>> disp aa  %% 等同disp('aa')
aa
>> disp 'aa'  %% 等同disp('aa')
aa
>> disp(bb)
abc
>> disp('bb')
bb
>> disp bb  %% 等同disp('bb')
bb
>> disp 'bb'  %% 等同disp('bb')
bb
4.再举下一个例子前, 先说明ascii码所对应的情况 : 数字0~9对应48~57, A~Z对应65~90, a~z对应97~122, 可由下列指令看出其对应关系; 为何要提这个? 因为根本上所有的字串变数都是对应一组ascii码的
>> char([48:57])
ans =
0123456789
>> char([65:90])
ans =
ABCDEFGHIJKLMNOPQRSTUVWXYZ
>> char([97:122])
ans =
abcdefghijklmnopqrstuvwxyz
5.综合3 & 4, 相同aa=[1:5]; bb='abc'; 再比较以下各指令之间的差异
>>double(aa)
ans =
     1     2     3     4     5
>>double aa  %% 等同double ('aa')或double 'aa', 小写a对应97
ans =
    97    97
>>double(bb)  %% bb='abc', 而小写abc分别对应97, 98, 99
ans =
    97    98    99
>>double bb  %% 等同double ('bb')或double 'bb', 小写b对应98
ans =
    98    98
6.这个例子跟matlab版本就有差异! 以下为v6.5之前的情况, 较新版就不允许命令格式
A =[0, -6, -1;6, 2, -16;-5, 20, -10];
>> eig(A)
ans =
  -3.0710         
  -2.4645 +17.6008i
  -2.4645 -17.6008i
>>eig A  %% 等同eig('A')或eig 'A', 大写A对应65
ans =
    65
>>eig 9  %% 等同eig('9')或eig '9', '9'对应57
ans =
    57
>>eig 99  %% 等同eig('99')或eig '9', '99' 对应[57,57]
??? Error using ==> eig
Matrix must be square.

[ 本帖最后由 ChaChing 于 2009-1-9 14:02 编辑 ]

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2009-1-17 10:30 | 显示全部楼层
前几天出差,今天看了chaching的帖子,讲的十分透彻,十分令人佩服。
 楼主| 发表于 2009-1-17 17:14 | 显示全部楼层

回复 沙发 xueeux 的帖子

客气! 只希望有用!
发表于 2012-5-24 09:30 | 显示全部楼层
认真学习了楼主的帖子,很有用!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 00:56 , Processed in 0.065212 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表