|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
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
查看全部评分
-
|