首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在MATLAB中存储.csv数据并计算平均值

如何在MATLAB中存储.csv数据并计算平均值
EN

Stack Overflow用户
提问于 2015-09-13 18:53:47
回答 1查看 576关注 0票数 1

有人可以帮助我理解如何在matlab中保存一组.csv文件,只选择我感兴趣的列,并输出一个最终文件,其中我有y列的平均值和y轴的标准差吗?我在matlab方面不是很好,所以我恳请是否有人能帮我解决这个问题。

以下是我到目前为止一直在尝试做的事情:

代码语言:javascript
复制
     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循环中的平均值和sure,但我不确定如何使用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-13 21:21:53

代码语言:javascript
复制
  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对于读取文件来说相当繁重,因为它的效率非常低。如果您想读取csv之类的结构化文件,使用importdata会更快。

创建一些随机矩阵,将其存储在一个带有标题的文件中:

代码语言:javascript
复制
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加载它

代码语言:javascript
复制
data = csvread('output.csv',1);

data现在包含您的五列,没有任何标题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32548928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档