有人可以帮助我理解如何在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循环中的平均值和sure,但我不确定如何使用它。
发布于 2015-09-13 21:21:53
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
会更快。
创建一些随机矩阵,将其存储在一个带有标题的文件中:
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
现在包含您的五列,没有任何标题。
https://stackoverflow.com/questions/32548928
复制相似问题