1

ファイルから入力を読み取り、データにインポートして Matlab で実行しています。

    parts = strread(tline,'%s','delimiter',';')       
    employee(i).name = parts(1);
    employee(i).salary= str2double(parts(2));

それから私はそれを印刷しようとします:

for i = 1:3
 fprintf('salary: %.2f\n',employee(i).salary);
 fprintf('employee name: %s\n',employee(i).name);
end

給与は問題なく印刷されます。ただし、変数「name」の場合、エラーが発生します。

Error using fprintf
Function is not defined for 'cell' inputs.
fprintf('employee name: %s\n',employee(i).name);

私はいくつかの他の例を探しました:

構造体データへのアクセス (matlab)

構造体フィールドに動的にアクセスするにはどうすればよいですか?

Matlab エラー: 'cell' 入力に対して関数が定義されていません

Matlab で構造を定義する方法

しかし、文字列だけが機能しないこのケースに対処するものは何もありません。

データを構造体として明示的に宣言していません。つまり、コード内に「構造体」という単語が含まれている場所はありませんが、Matlab は明らかに自動的に「構造体の配列」として認識します。

ここに何が欠けているかのヒントはありますか?

すべてのコメントは大歓迎です!

4

1 に答える 1

3

問題は、それemployee(k).nameがセル ( で確認iscell(employee(1).name)) であり、書式文字列%sがそれを処理する方法を知らないことです。

セルである理由strreadは、セル配列を返すためです。parts結果 ( )から要素を取得するには、セルを返すので{}はなく、文字列を返すインデックスを使用します。()

employee(i).name = parts{1};
于 2016-06-16T20:28:06.033 に答える