结构是一种方便的方式,可以将许多变量作为单个对象携带,并将这些变量封装在单个参数中传递给函数。
然而,一旦一个结构被传递给一个函数,许多用户(根据各种新闻组的帖子)发现必须通过点索引符号重复访问它的字段是令人厌烦的,并寻求自动化的方法来获取一个结构并将其所有字段分配给分离的变量,如
一个= myStruct.a;
b = myStruct.b;
c = myStruct.c;
等等……
万博 尤文图斯基于assignin()的解决方案经常被尝试,但是是危险的,原因已经讨论过了,例如,在这个线程中:
//www.tianjin-qmedu.com/matlabcentral/newsreader/view_thread/244639#628695
这个FEX提交中的structvars()工具实际上也做了同样好的事情,而且安全得多。
给定一个结构,它将打印将结构字段分配给独立变量所需的代码行(或相反)。代码行可以方便地从命令窗口复制/粘贴到文件编辑器中需要解压缩变量的位置。
例如:给定结构myStruct,包含字段a,b,c,和d
(1) structvars(myStruct) %分配字段给变量
ans =
一个= myStruct.a;
b = myStruct.b;
c = myStruct.c;
d = myStruct.d;
(2) structvars(3,myStruct) %将最后一个结果拆分为3列
ans =
一个= myStruct.a;c = myStruct.c;d = myStruct.d;
b = myStruct.b;
(3) structvars(3,myStruct,0) %分配变量到字段
ans =
myStruct。一个=;myStruct.c = c;myStruct。d = d;
myStruct。b = b;
如果稍后添加/删除结构字段,显然可以重新生成命令。另一方面,手工进行这些增量编辑的工作量通常是最小的。
引用作为
MATT J(2021)。将字段构造为变量(//www.tianjin-qmedu.com/matlabcentral/fileexchange/26216-structure-fields-to-variables), MATLAB中央文件交换。检索.