[討論] 如何將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