簡體   English   中英

如何在MATLAB中存儲.csv數據並計算平均值

[英]How to store .csv data and calculate average value in MATLAB

有人可以幫助我了解如何在Matlab中保存一組.csv文件,僅選擇感興趣的列,並獲得最終文件作為輸出,該文件中我具有y列的平均值和y軸? 我在matlab上不是很好,所以請問是否有人可以幫助我解決這個問題。

到目前為止,我一直在嘗試以下操作:

     clear all;
clc;
which_column = 5; 
dirstats = dir('*.csv');
col3Complete=0;
col4Complete=0;
for K = 1:length(dirstats)

   [num,txt,raw] = xlsread(dirstats(K).name);
   col3=num(:,3);
   col4=num(:,4);
   col3Complete=[col3Complete;col3];
   col4Complete=[col4Complete;col4];
   avgVal(K)=mean(col4(:));
end
col3Complete(1)=[];
col4Complete(1)=[];
%columnavg = mean(col4Complete);
%columnstd = std(col4Complete);
% xvals = 1 : size(columnavg,1);
% plot(xvals, columnavg, 'b-', xvals, columnavg-columnstd, 'r--', xvals, columnavg+columstd, 'r--');

B = reshape(col4Complete,[5000,K]);
m=mean(B,2);
C = reshape (col4Complete,[5000,K]);
S=std(C,0,2);

現在我知道我應該使用mean()函數在for循環中計算均值和標准差,但是我不確定如何使用它。

  which_column = 5; 
  dirstats = dir('*.csv');
  col3Complete=[]; % Initialise as empty matrix
  col4Complete=[];
  avgVal = zeros(length(dirstats),2); % initialise as columnvector
  for K = 1:length(dirstats)

     [num,txt,raw] = xlsread(dirstats(K).name);
     col3=num(:,3);
     col4=num(:,4);
     col3Complete=[col3Complete;col3];
     col4Complete=[col4Complete;col4];
     avgVal(K,1)=mean(col4(:)); % 1st column contains mean
     avgVal(K,2)=std(col4(:)); % 2nd column contains standard deviation
  end
  %columnavg = mean(col4Complete);
  %columnstd = std(col4Complete);
  % xvals = 1 : size(columnavg,1);
  % plot(xvals, columnavg, 'b-', xvals, columnavg-columnstd, 'r--', xvals, columnavg+columstd, 'r--');

  B = reshape(col4Complete,[5000,K]);
  meanVals=mean(B,2);

我並沒有做太多改變,只是將您的數組初始化為空數組,因此您以后不必刪除第一個條目,並將avgVal為列向量,其平均值在第1列,標准差在第1列。您當然可以如果您想同時為csv中的第3列收集這些統計信息,請添加兩列。

附帶說明: xlsread對於讀取文件而言相當繁重,因為Excel效率極低。 如果要讀取結構化文件(例如csv),則使用importdata更快。

創建一些隨機矩陣以存儲在帶有標題的文件中:

A = rand(1e3,5);
out = fopen('output.csv','w');
fprintf(out,['ColumnA', '\t', 'ColumnB', '\t', 'ColumnC',  '\t', 'ColumnD',  '\t', 'ColumnE','\n']);
fclose(out);
dlmwrite('output.csv', A, 'delimiter','\t','-append');

使用csvread加載它:

data = csvread('output.csv',1);

data現在包含您的五列,沒有任何標題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM