【问题标题】:Reading multiple text files with two columns in MATLAB在 MATLAB 中读取具有两列的多个文本文件
【发布时间】:2017-05-18 03:56:08
【问题描述】:

我想阅读多个文本文件。每个文本文件有两列。所有文本文件的所有两列都有相同的行。我想知道,在 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

【问题讨论】:

  • 您希望将所有数据保存到a 吗?目前您将遇到尺寸不匹配的问题,也许您想要a 上的第三个维度,即a(:,:,k) = load...x = a(:,1,k);

标签: matlab


【解决方案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

【讨论】:

    【解决方案2】:

    您可以通过多种方式做到这一点。我想你想用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
    

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

    【讨论】:

    • 谢谢。这给了我解决方案。
    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    相关资源
    最近更新 更多