matlab同时给多个变量赋值(deal) |
您所在的位置:网站首页 › matlab取值范围不同的多个变量 › matlab同时给多个变量赋值(deal) |
matlab同时给多个变量赋值
例子1:对x,y,z同时初始化为100例子2:对a,b,c分别初始化为mat,lab,sky例子3:将Cell数组x={1 2 3}中的1,2,3分别赋值给a,b,c例子4:将cell数组x={1 2 3}分别付给结构数组y的data字段例子5:将结构体数组A的age字段全部赋值为0
转载自
MATLAB中一条语句给多个变量赋值(转载)_了凡春秋_新浪博客
http://blog.sina.com.cn/s/blog_6163bdeb0102dvhk.html
文本如下 以前一直想,要是能够在一个语句给多个变量赋值是多么美好的事情呀。比如对x,y和z都赋值100 x=y=z=100 对a,b和c分别赋值1,2和3 a,b,c=1,2,3 这样的语句在python是合法的,但是在MATLAB的中是不合法的, 那到底MATLAB中是否有其它解决方案呢。呵呵偷偷告诉您,这个是有滴。 MATLAB中提供了deal函数进行多变量赋值处理,且用处很大哦。该函数最基本语法为 [Y1, Y2, Y3, …] = deal(X),即Y1=Y2=Y3=X [Y1, Y2, Y3, …] = deal(X1, X2, X3, …),即Y1=X1,Y2=X2,Y3=X3 上面只是函数的基本用法,有些人觉得也没什么呀,哈哈其实您错了,这个函数的用处大着呢。我需要从细心看问题,才能看到本质。 在讲解之前先说两个小知识点: (1)如果x={‘mat’,'lab’,'sky’},那么x{:}结果完全等效于:x{1},x{2},x{3},注意三个数据之间有逗号分隔开 (2)如果x(1).url=’mat’,x(2).url=’lab’,x(3).url=’sky’,也就是说x是一个结构体数组,那么x.url将完全等效于:x(1).url,x(2).url,x(3).url,注意有逗号分隔 例子1:对x,y,z同时初始化为100[x,y,z]=deal(100) x = 100 y = 100 z = 100 例子2:对a,b,c分别初始化为mat,lab,sky[a,b,c]=deal(‘mat’,'lab’,'sky’) a = mat b = lab c = sky 例子3:将Cell数组x={1 2 3}中的1,2,3分别赋值给a,b,cx={1 2 3}; [a,b,c]=deal(x{:}) % 注意[a,b,c]=deal({1 2 3})是错误的 a = 1 b = 2 c = 3 例子4:将cell数组x={1 2 3}分别付给结构数组y的data字段x={1 2 3}; [y(1:3).data]=deal(x{:}) y = 1×3 struct array with fields: data 例子5:将结构体数组A的age字段全部赋值为0[A(1:100).age]=deal(0) A = 1×100 struct array with fields: age 如果您的MATLAB版本是7.0以上,那么有时deal函数可以直接省略,请往下看! 其实MATLAB中只要等号两边的表达式中,逗号的个数相等就可以直接省略deal进行赋值,注意等号右边的逗号表达式不能手工敲入,只能使用x{:}和y.me等两种形式得到的等效逗号表达式,但左边可以使用[a,b]的手动逗号形式。 x={10 20}; [a,b]=x{:} a = 10 b = 20 web(1).url=’matlabsky’;web(2).url=’mathsky’; [a,b]=web.url a = matlabsky b = mathsky |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |