[讨论] 如何将structure内各field转存为variables?

楼主: kusoer1017 (如果是你..可以喔)   2015-11-07 00:56:30
各位前辈大家好
我成功让函数输出structure了
现在希望让structure中每个field
依照其field名称生成variables
而内容则为原先variables的内容

set =
electronicdelay: 1.0900
timeinterval: 0.0250
res: 0.7000
wavenumber: [7259x1 double]
Nwavenumber: 7259
Ntime: 4000
time: [1x4000 double]
希望生成
1.electronicdelay
2.timinterval
...
等变量
网络上搜寻到了一个函式structvars
可以产生下列文字
(a为char)
>> a=structvars(set)
a =
electronicdelay = set.electronicdelay;
timeinterval = set.timeinterval;
res = set.res;
wavenumber = set.wavenumber;
Nwavenumber = set.Nwavenumber;
Ntime = set.Ntime;
time = set.time;
基本上我只要复制a的内容
然后丢到CMW内输出即可
然而我希望可靠程式码达到这动作
因此试着使用eval
但会出现下列结果
>> eval(a)
Error: The expression to the left of the equals sign is not a valid target
for an assignment.
我确定a属于char
我尝试手动将a中文字的头跟尾加上单引号
结果是可行的
我最终的目标如同标题
但我能想到的方法如同我前面叙述
卡在最后一步将a的内容执行
是否可以给我一点建议?
: 各位前辈大家好
: 我最近使用matlab处理实验数据
: 写了一个function A
: 并将经A运算处理后
: 之有用数据存为一结构
: 如下
:
: trace =
:
: 1x2 struct array with fields:
:
: Jmax
: PInf
: RInf
: P
: R
: Pindex
: Rindex
:
: 希望此function可以输出trace这个结构写为
: function [trace] = function(input)
: 然而function似乎只可以输出变量
: 请问有方法可让我从A中输出trace这个结构吗?
:
: 谢谢
作者: sunev (Veritas)   2015-11-07 00:59:00
可以啊,问题在哪里?
作者: jeffppp (烦..)   2015-11-07 09:24:00
function 最后面加上A.trace = trace;
楼主: kusoer1017 (如果是你..可以喔)   2015-11-07 13:28:00
谢谢两位 我知道我问题出在哪了!!当初会觉得不能输出结构是因为我在[]内输入trace时显示the function returne value 'trace' might beunset. 因此我以为无法输出结构。然而这是因为我产生trace这个结构是写在eval内部因此matlab在我执行这个function前无法判断trace存在?
作者: celestialgod (天)   2015-11-08 00:57:00
看了三遍看不懂你的问题= =其实我是看不懂你到底在eval什么如果都生得出来字串 直接eval应该没问题eval('a')会成功是因为你这样是在叫出a这个物件eval(a)不成功应该a是cell或是char可能会有问题char matrix才会有问题我现在那篇有说明为啥不能

Links booklink

Contact Us: admin [ a t ] ucptt.com