Matlab - 为什么在使用 for 循环导入数据时 fileID 变量不更新?
Matlab - why doesn't fileID variable update when importing data using for loop?
我正在使用 Matlab 的导入数据代码生成器将数据传递给一系列命令。当我 运行 脚本并引用单个文件时,这工作正常,但如果我遍历多个文件,我的变量不会像我预期的那样更新。我相信我已经将问题追溯到 'fileID' 在循环的第一次迭代后没有更新。
在下面的代码中,我可以确认 'filename' 会随着循环的每次迭代而更新,而 'fileID' 不会。因此,在每次迭代中,相同的向量被分配给变量 'y'。
谁能告诉我哪里出错了?
FileList = dir('*.csv');
N = size(FileList,1);
for k = 1:N
% get the file name:
filename = FileList(k).name;
delimiter = ',';
startRow = 2;
%% Format string for each line of text:
% column2: double (%f)
% column3: double (%f)
% column4: double (%f)
% column5: double (%f)
% For more information, see the TEXTSCAN documentation.
formatSpec = '%*s%f%f%f%f%[^\n\r]';
%% Open the text file.
fileID = fopen(filename,'r');
%% Read columns of data according to format string.
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'HeaderLines' ,startRow-1, 'ReturnOnError', false);
%% Close the text file.
fclose(fileID);
%% Allocate imported array to column variable names
O1 = dataArray{:, 1};
H1 = dataArray{:, 2};
L1 = dataArray{:, 3};
C1 = dataArray{:, 4};
%% Test filename and fileID
filename
fileID
%% Clear temporary variables
clearvars filename delimiter startRow formatSpec fileID dataArray ans;
y=C1;
figure
plot(y);
end
FileID 不应像您期望的那样改变。 fileID 只是一个文件标识符,提取的数据在 dataArray 中,因为您借助 fileID[= 扫描文本21=]。
所以 FileID 通常等于 3 如果你只是打开文件并且在打开新文件之前关闭它。如果您不关闭它,每个文件的 fileID 中会有不同的编号。
我正在使用 Matlab 的导入数据代码生成器将数据传递给一系列命令。当我 运行 脚本并引用单个文件时,这工作正常,但如果我遍历多个文件,我的变量不会像我预期的那样更新。我相信我已经将问题追溯到 'fileID' 在循环的第一次迭代后没有更新。
在下面的代码中,我可以确认 'filename' 会随着循环的每次迭代而更新,而 'fileID' 不会。因此,在每次迭代中,相同的向量被分配给变量 'y'。
谁能告诉我哪里出错了?
FileList = dir('*.csv');
N = size(FileList,1);
for k = 1:N
% get the file name:
filename = FileList(k).name;
delimiter = ',';
startRow = 2;
%% Format string for each line of text:
% column2: double (%f)
% column3: double (%f)
% column4: double (%f)
% column5: double (%f)
% For more information, see the TEXTSCAN documentation.
formatSpec = '%*s%f%f%f%f%[^\n\r]';
%% Open the text file.
fileID = fopen(filename,'r');
%% Read columns of data according to format string.
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'HeaderLines' ,startRow-1, 'ReturnOnError', false);
%% Close the text file.
fclose(fileID);
%% Allocate imported array to column variable names
O1 = dataArray{:, 1};
H1 = dataArray{:, 2};
L1 = dataArray{:, 3};
C1 = dataArray{:, 4};
%% Test filename and fileID
filename
fileID
%% Clear temporary variables
clearvars filename delimiter startRow formatSpec fileID dataArray ans;
y=C1;
figure
plot(y);
end
FileID 不应像您期望的那样改变。 fileID 只是一个文件标识符,提取的数据在 dataArray 中,因为您借助 fileID[= 扫描文本21=]。
所以 FileID 通常等于 3 如果你只是打开文件并且在打开新文件之前关闭它。如果您不关闭它,每个文件的 fileID 中会有不同的编号。