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ヘルプこここのトピックに関して非常に役立ちます。