[英]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.