MATLAB自动生成函数来输入变量,而不是.txt文件



MATALB的"导入数据";该功能自动生成一个函数,该函数输入一个.txt文件并输出一个表。这个函数的前几行看起来是这样的:

function output= myfunction(filename)
delimiter = {';','='};
%% Read columns of data as text:
formatSpec = '%s%s%s%s%s%s%[^nr]';
%% Open the text file.
fileID = fopen(filename,'r');
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'TextType', 'string',  'ReturnOnError', false);
%% Close the text file.
fclose(fileID);

然而,我需要这个函数来输入一个变量,而不是一个具有完全相同效果的.txt文件。我已经将所有数据以变量的形式存储在.txt文件中。我想我可以简单地用变量替换filename,并删除fileIDfclose行代码,但它不起作用。

在循环中使用这个自动生成的函数来循环通过您拥有的文件(名称(

% path to folder with txt-files
pFlr = pwd; % path to working directory
Lst = dir( fullfile(pFldr,'*.txt') ); % only get txt-files
for i = 1:length(Lst)
% path to file
pFl = fullfile( Lst(i).folder,Lst(i).name );
% read file by calling the auto-generated function
Dat1 = myfunction( pFl );
end

通过这种方式,您可以在一个循环中访问所有文件,例如将数据存储在一个表中:

k = 1; % control variable
for i = 1:length(Lst)
% path to file
pFl = fullfile( Lst(i).folder,Lst(i).name );
% read file by calling the auto-generated function
Dat1 = myfunction( pFl );

% do something with this data, e.g. store it
if i == 1 % allocate data if
Dat = Dat1;
% extend for allocation
vSz= height(Dat1)*length(Lst);
Dat(vSz,:) = Dat1(1,:); % assign the first row of the first table to the last row of the allocated table to expand it
else
Dat(k:k+size(Dat1)-1,:) = Dat1;
end
k = k + size(Dat1);
end
% crop table
Dat = Dat(1:k-1,:);

相关内容

  • 没有找到相关文章

最新更新