作者kusoer1017 (如果是你..可以喔)
看板MATLAB
标题[讨论] 如何让函式输出结构(structure)?
时间Sat Nov 7 00:56:30 2015
各位前辈大家好
我成功让函数输出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这个结构吗?
:
: 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.113.224.210
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1446828993.A.B44.html
1F:推 sunev: 可以啊,问题在哪里? 11/07 00:59
2F:推 jeffppp: function 最後面加上A.trace = trace; 11/07 09:24
3F:→ kusoer1017: 谢谢两位 我知道我问题出在哪了!! 11/07 13:28
4F:→ kusoer1017: 当初会觉得不能输出结构是因为我在[]内输入trace时 11/07 13:29
5F:→ kusoer1017: 显示the function returne value 'trace' might be 11/07 13:32
6F:→ kusoer1017: unset. 因此我以为无法输出结构。 11/07 13:32
7F:→ kusoer1017: 然而这是因为我产生trace这个结构是写在eval内部 11/07 13:33
8F:→ kusoer1017: 因此matlab在我执行这个function前无法判断trace存在? 11/07 13:34
※ 编辑: kusoer1017 (140.113.224.210), 11/07/2015 23:51:37
※ 编辑: kusoer1017 (140.113.224.210), 11/07/2015 23:52:24
9F:→ celestialgod: 看了三遍看不懂你的问题= = 11/08 00:57
Q_Q 总之我想把一个结构变数内的各个field独立出来
例如我本来要呼叫set.wavenumber
我希望把wavenumber从set内取出
产生一个新的变数名称就叫做wavenumber
内容跟set.wavenumber一样
※ 编辑: kusoer1017 (140.113.224.210), 11/08/2015 12:51:04
10F:→ celestialgod: 其实我是看不懂你到底在eval什麽 11/08 13:02
11F:→ celestialgod: 如果都生得出来字串 直接eval应该没问题 11/08 13:03
12F:→ celestialgod: eval('a')会成功是因为你这样是在叫出a这个物件 11/08 13:03
13F:→ celestialgod: eval(a)不成功应该a是cell或是char可能会有问题 11/08 13:04
14F:→ celestialgod: char matrix才会有问题 11/08 13:09
再次确认了一下
a是个7*43的char
我也很困惑为啥不能直接eval
会出现
Error: The expression to the left of the equals sign is not a valid target
for an assignment.
※ 编辑: kusoer1017 (140.113.224.210), 11/08/2015 14:03:48
15F:→ celestialgod: 我现在那篇有说明为啥不能 11/08 14:07