在MATLAB中读取带有两列的多个文本文件

时间:2017-05-18 03:56:08

标签: matlab

我想阅读多个文本文件。每个文本文件都有两列。所有文本文件的所有两列都具有相同的行。我想知道,在MATLAB中,如何读取每个文本文件然后逐个读取每一列,从另一列中减去一列数据,然后读取下一个文件,依此类推。我编写了以下代码,但我在代码中缺少一些步骤。我感谢您的支持。谢谢大家。

for k = 1:9
filename = sprintf('Data_F_Ind000%d.txt',k);
a(:,k) = load(filename);
x = a(:,1)};
y = a(:,2);
z = x - y;
end

2 个答案:

答案 0 :(得分:1)

data = cell(9,1) ;
diff_data = cell(9,1) ;
for k = 1:9
    filename = sprintf('Data_F_Ind000%d.txt',k);
    a = load(filename);
    data{i} = a ;
    x = a(:,1)};
    y = a(:,2);
    diff_data{i} = x - y;
end

答案 1 :(得分:0)

您可以通过多种方式完成此操作。我想你想用z做一些事情,而不是每次都扔掉它。我会利用访问模式来做到这一点。

numFiles = 9;
numRows = ....; % not required but used to preallocate the a matrix
pattern = 1:2:numFiles * 2; % create a vector of 1 3 5 ...
a = zeros(numRows, numFiles * 2);
z = zeros(numRows, numFiles);
for k = 1:numFiles
    fileName = sprintf('Data_F_Ind000%d.txt, 'k');
    a(:,pattern(k):pattern(k) + 1) = load(fileName);
    z(:,k) = a(:,pattern(k)) - a(:,pattern(k) + 1);
end

这是未经测试的,显然缺少一些数据但意图应该清楚。您不需要预先分配变量,但它有助于加快计算速度,因此我尽可能地尝试这样做。