3

ds=struct('name',{{'my_name_is'},{'matlab_thining_hair'}})フィールドを持つ 1x2 構造体配列として格納されるように、matlab 構造体を作成する必要があります: name. ds.name を呼び出すと、次の出力が生成されます。

ds.name

ans = 'my_name_is'

ans = 'matlab_thining_hair'

出力の一重引用符に注意してください。それらは重要です。そうは言っても、次の変数を使用して上記の構造を作成する必要があります。とりわけ、私は次のことを試しました:

Y = cell2struct(X, 'name', 1)'

フィールド name を持つ 1x2 構造体配列になりますが、Y を呼び出すと次の出力が生成されます。

Y.name

ans = my_name_is

ans = matlab_thining_hair

出力に一重引用符がないことに注意してください。Y と ds は両方ともフィールド名を持つ 1x2 構造体配列ですが、フィールド値は同じようにフォーマットされておらず、構造体のバイト サイズも異なります。フィールド値を文字配列としてフォーマットする方法は?

4

2 に答える 2

1

最初のケースでは、値がセル配列である 2 つのフィールドを持つ構造体を作成しました。cell 配列は引用符付きで表示されます。

2番目のケースでは、構造体フィールドに必要なchar配列があります。文字配列は引用符なしで表示されます。

これを確認するには、コマンド プロンプト {'abc'} に入力してから 'abc' を入力します。

最初のケースでは、セル括弧の外側に文字列を渡すことで、セル配列以外のフィールド値を作成できます。

ds=struct('name',{'my_name_is','matlab_thining_hair'})

于 2013-01-10T02:34:27.437 に答える
1

cell2struct を呼び出す前に、char 文字列をセルの別のレイヤーに貼り付けます。それ以外の:

X = { 'foo', 'bar' }

試す:

X = { {'foo'}, {'bar'} }

つまり、セルの内容自体が文字ではなくセルである 1 行 2 列のセルです。次にcell2struct(X, 'name', 1)、セル配列のフィールドを持つ構造体配列を提供する必要があります。

num2cell既存の X が cellstr の場合、それを呼び出して、各セルをセル間接の別のレイヤーにプッシュするだけでよいと思います。

于 2013-01-11T16:58:09.297 に答える