我需要建立一個 matlab 結構,ds=struct('name',{{'my_name_is'},{'matlab_thining_hair'}})
它儲存為帶有欄位名稱的 1x2 結構陣列。調用ds.name
生成輸出:
ds.name
ans = 'my_name_is'
ans = 'matlab_thining_hair'
請注意輸出中的單引號。它們很重要。也就是說,我需要使用以下變數來建立上述結構:X = [1x46 char] [1x47 char]
即 1x2 單元格,我相信它實際上是字串單元格陣列。除此之外,我嘗試過以下操作:
Y = cell2struct(X, 'name', 1)'
這會產生一個帶有欄位名稱的 1x2 結構數組,但是對 Y 的呼叫會產生輸出:
Y.name
ans = my_name_is
ans = matlab_thining_hair
請注意,輸出中缺少單引號,儘管 Y 和 ds 都是具有欄位名稱的 1x2 結構體數組,但欄位值的格式並不相同,並且結構體的位元組大小也有所不同。本質上,我需要的是一個具有元胞數組字段的結構,其中本質上每個元胞數組都由一個唯一的 char 數組組成。我不知道如何將字段值格式化為字元數組?任何幫助將非常感激。
答案1
您的範例中的差異在於,原始範例ds.name 的每個元素都是包含字元的儲存格(例如{'my name is'}),而X 的每個元素都是一個字元(例如'my name is')。如果將 X 的每個元素的類型從字元變更為包含字元的儲存格,那麼您應該得到您正在尋找的行為。
如下例所示。
X2={{'my_name_is'},{'matlab_thinning_hair'}};
Y = cell2struct(X2, '名稱', 1);
Y.姓名
答案=
'我的名字是'
答案=
'matlab_thinning_hair'
您可以透過對元素進行索引並執行以下操作來為變數 X 實現此目的:
X2{1}={X{1}};
X2{2}={X{2}}
matlab幫助這裡對這個話題很有幫助。