想象一下下面的結構:通過函數到現有的結構或變量添加字段,不重命名或破壞原有結構
A.B1 = 1:42;
A.B2 = 'Hello World!'
現在我希望做一些操作,但備份在新substruct現有的數據。
A.B1.C1 = A.B1;
A.B1.C2 = mean(A.B1.C1);
這兩條線路(作爲一個例子),我想投入的函數,因此我的腳本將如下所示:
A.B1 = 1:42;
A.B2 = 'Hello World!'
myfunction(A.B1)
和我的工作空間應該事後看起來像:
A =
B1: [1x1 struct]
B2: 'Hello World!'
A.B1 =
C1: [1x42 double]
C2: 21.5
但我無法設法創建該功能,我的原始結構A
沒有被破壞。除此之外,我的功能輸入可能是W.X.Y
,我想在此之後獲得W.X.Y.Z1
和W.X.Y.Z2
。此外,它可能是一個簡單的矢量A = 1:42
,之後應該是A.B1
和A.B2
。
任何建議?
我可以用fieldnames
和assignin('base',...)
來構建一些醜陋的東西 - 但這真的是一種方式嗎?
編輯:一個主要的問題還在於,功能inputname
不工作的結構。所以如果我通過A
我的功能,然後我可以使用fieldnames
獲得B1
和B2
的名稱,但我找不到什麼是最初的字段名稱「A
」。如果A
將變量inputname(1)
在我的功能將返回'A'
。對於結構體,輸出是空的。
類和方法會是解決方案嗎?不幸的是我不熟悉的OOP在所有...
難道我說得對,這個問題可以歸結爲:如何找出水平/域的數量在'struct',這樣我可以分配一個額外的級別? – Schorsch
@Schorsch:對於「難看」的方法是的,另外需要找出所有字段名並通過'assignin'將它們寫回工作區。我可以做到。但我正在尋找更優雅的通用解決方案。 – thewaywewalk
@ Schorsch,實際上即使這很棘手,請參閱我的編輯。 – thewaywewalk