在第2行声明变量(filename
)并在第4行中使用它会产生错误。
如果我使用data.temp(12,;)
,那么它运行正常,但如果我将filename = temp
和index = 12
作为输入,然后运行data.filename(index,:);
,则会出错。有人请你帮帮我
这是确切的代码:
data = importdata('check.mat');
filename = input('Enter the filename: ','s');
index = input('Enter Index of the file: ');
row = data.filename(index,:);
引用不存在的字段'filename'
答案 0 :(得分:5)
你错误地使用了结构。
使用字符串访问结构时,您需要使用getfield
,因为fieldname
包含一个字符串,但当您执行data.fieldname
时,实际上并未使用fieldname
的值1}}在点之后,但实际上试图访问数据中的字段fieldname
,这是不存在的。
取而代之的是:
row=getfield(data, filename);
答案 1 :(得分:1)
作为getfield
的替代方案,您还可以使用dynamic field names,在我最近使用的Matlab版本中,允许直接索引引用字段:
stuff = data.(filename)(index,:);
子表达式data.(filename)
解析为filename
结构的字段data
中的数据,(index,:)
然后将该数据编入索引。