文字列のセル配列をmatlab構造体に変換する

文字列のセル配列をmatlab構造体に変換する

ds=struct('name',{{'my_name_is'},{'matlab_thining_hair'}})フィールド名を持つ 1x2 構造配列として保存するMATLAB 構造を作成する必要があります。 を呼び出すと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_薄毛'

変数 X に対してこれを実現するには、要素にインデックスを付けて以下を実行します。

X2{1} = {X{1}};

X2{2} = {X{2}}

MATLABヘルプこここのトピックに関して非常に役立ちます。

関連情報