【问题标题】:sum of files' contents matlab文件内容总和 matlab
【发布时间】:2012-11-26 19:25:58
【问题描述】:

我想汇总我用fprintf 创建的文件。我有 5 个包含类似内容的文本文件(1 列 8 行):

0.1811  
0.0889  
-0.1073  
-0.0777  
-0.0596  
0.0971  
0.1021  
0.3730  

我正在尝试将这些文件加载​​到工作区并对这些列求和。我可以对两个文件的列求和,但最后 3 个文件的总和仅适用于最后一行(第 8 行)。我知道这与加载和打开文件有关。最后两个文件被加载:

SumFid=fopen(MyFile,'a');   %this is how my 2 files work opened
FID=fopen(FirstFile);  
MatrixSub = load(FirstFile);  
m = textscan(FID,'%f %f %f %f %f %f %f');  
horzcat(m{:})      

而对于我正在使用的其他 3 个文件:

Wfid=fopen(VFile,'a');  
Mat = load(VFile);  
VData = fscanf(Wfid,'%f',[8,1]);  

当我尝试使用与前两个相同的 texscanhorzcat 时,它会给出 内存不足错误,但对于后一个代码,它只会在以下情况下对这些文件内容的最后一行求和我试试:

for i = i:8  
  Sum = A+B % this from first 2 files works  
  Sum3Files = file1+file2+files3;        
end  

我知道这看起来可能很简单,但我是 MATLAB 新手,非常感谢您的帮助。

【问题讨论】:

  • 我现在手头没有 Matlab,但是 Wfid=fopen(VFile,'a'); 行会打开一个文件进行追加,尝试 'r' 进行读取。最后一个代码块的循环不依赖于 i(您可能还想使用另一个字母,因为 i 是 sqrt(-1))
  • 您好,感谢您的回答。我试过'r'而不是'a',但还是一样。我也知道循环中的东西与我无关,但我不知道如何编写它,因此它逐行汇总所有文件。它适用于我使用“horzcat”的前一段代码,所以我在这里尝试了相同的操作。我不知道如何将 i 与文件内容联系起来 - 我想它因此不起作用。

标签: matlab matrix rows


【解决方案1】:

我认为你所追求的是这样的:

total = 0;
files = {'data.txt' 'data2.txt'};  % add more files here

for ii = 1:numel(files)

    fid = fopen(files{ii});
        C = textscan(fid, '');        
    fclose(fid);

    total = total + [C{:}];

end

【讨论】:

  • 您好,感谢您的帮助。我试过这个技巧。我可能不清楚对不起。我需要逐行的元素总和。这里的“总计”最后给了我一个数字,所有元素的总和。虽然我想得到一个 1 列和 8 行的矩阵..换句话说,如果你看我的问题的第一位,我需要类似的输出。这意味着逐行求和。所以总共应该是 8 行 1 列。
  • :非常感谢您的帮助!这次效果很好。学习如何将文件放入数组以便之后阅读它们非常有用。我会再次使用它。非常感谢。
  • @user1822224:嗯,很高兴为您提供帮助!如果您认为我的回答有用,您可以通过单击此问题左上角的向上/向下/勾选符号 sy,bols 来投票和/或接受它。
猜你喜欢
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 2018-05-25
相关资源
最近更新 更多