在Matlab中将文字文件名保存为变量

时间:2017-11-30 12:36:35

标签: matlab filenames

我的目标是加载表中列出的一些文件,提取数据,并将结果保存为第一个文件名的变量。表中的列表是用户输入的字符,表示将很快加载的文件的名称。我会给你一个例子,因为你可能不明白我的意思。当表中列出A,B,C(字符串)时,我的代码将找到它们所在的位置(例如A.txt)并加载它们的数据。从它们收集数据后,结果将保存在表的名称中,如下所示:A(变量)= result_data(:4)。这是我的代码。请让我知道错误的地方。 (请注意,表是使用uitable的nx1单元格数组。)

function pushbutton1_Callback(hObject, eventdata, handles)

data = get(handles.uitable,'data'); % get strings in table
for i = 1:size(data(:,1))  % count the #strings

fid = fopen([ data(i),'.csv' ]); %load the data and extract what I need
...
fclose(fid);
data(i) = result(row_1:row_2 , 4)  % this is the result_data 
% data(i) is variable string, so I am not sure whether to use the eval function.

1 个答案:

答案 0 :(得分:0)

这里没有你的表进一步调试是我的建议。 data可能是一个单元格数组,因为您要从uitable中提取它,如下所示。

data = get(handles.uitable,'data'); % get strings in table

所以这一行应该出错:

fid = fopen([ data(i),'.csv' ]);

将其更改为:

fid = fopen([ data{i},'.csv' ]); 

或者这个:

fid = fopen([ char(data(i)),'.csv' ]); 

将结果保存到与您的字符串匹配的变量名时,我建议使用带有动态字段名称的结构而不是裸变量...否则您可能必须使用应该避免使用的eval。

所以这(这不是你要求的):

data(i) = result(row_1:row_2 , 4)  % this is the result_data 

应该成为:

outData.(data{i}) = result(row_1:row_2 , 4)  % this is the result_data 

如果data是您所说的包含{' A',' B',' C',...}的单元格数组 然后outData将采用以下格式并包含每个结果。

outData.A
outData.B
outData.C