Matlab 将不断增加的.csv文件的最新条目相加?
如何对.csv文件第二列中的100个最新值求和 .csv文件每分钟更新一行,其中包含一个新值。i、 e行维度每分钟都在不断增加。假设我可以累积200个值,即200分钟后的200行数据(来自外部进程),但我只想将最近添加的100个值相加(即从文件的最后一行向后增加99行) 我有3组值,每列1个值Matlab 将不断增加的.csv文件的最新条目相加?,matlab,function,loops,csv,timer,Matlab,Function,Loops,Csv,Timer,如何对.csv文件第二列中的100个最新值求和 .csv文件每分钟更新一行,其中包含一个新值。i、 e行维度每分钟都在不断增加。假设我可以累积200个值,即200分钟后的200行数据(来自外部进程),但我只想将最近添加的100个值相加(即从文件的最后一行向后增加99行) 我有3组值,每列1个值Col2Value是.csv文件第2列中的值。我附加到的文件名为'200mins.csv' dlmwrite('200 mins.csv', [Col1Value, Col2Value,Col3Value]
Col2Value
是.csv文件第2列中的值。我附加到的文件名为'200mins.csv'
dlmwrite('200 mins.csv', [Col1Value, Col2Value,Col3Value], '-append');
以下是运行8分钟后的csv文件片段,即第2列中的8个值:
我知道MATLAB必须先读取整个文件,但这很好。我可以解决这个问题,我的应用程序不是资源关键型的。当你在Matlab中有一个数组时,你可以用
last100sum = sum(A(end-99:end));
因此,如果读取.csv文件得到一个2D数组(我称之为wholeFile
),并且需要第2列中最后100个元素的总和,可以这样做:
last100sum2 = sum(wholeFile(end-99:end, 2));
如果用于读取文件的例程返回一个单元格数组,则需要首先将单元格数组转换为常规数组-如果它仅包含值(例如,与字符串相反),则可能使用cell2mat
最后—如果要读取“最多”100个值,但可能没有100行,请执行以下操作:
sz = size(wholeFile);
firstRow = max(sz(1) - 99, 1); % will return 1 if fewer than 100 rows are found
atMost100sum = sum(wholeFile(firstRow:end, 2));
任何问题-请提问