字串元胞數組轉 matlab 結構

字串元胞數組轉 matlab 結構

我需要建立一個 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幫助這裡對這個話題很有幫助。

相關內容