matlab代码中的错误,用于声明变量然后使用它

时间:2016-03-15 10:38:20

标签: matlab variables scope machine-learning matlab-figure

在第2行声明变量(filename)并在第4行中使用它会产生错误。 如果我使用data.temp(12,;),那么它运行正常,但如果我将filename = tempindex = 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'

2 个答案:

答案 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,:)然后将该数据编入索引。