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

工资打印没有问题。但是对于变量“名称”,它给出了一个错误:

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

我找了一些其他的例子:

访问结构数据(matlab)

如何动态访问结构字段?

Matlab 错误:未为“单元”输入定义函数

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 回答