Extracting multiple row values (with unequal range) in a column separately

1 ビュー (過去 30 日間)
ANIE
ANIE 2022 年 6 月 23 日
コメント済み: Mathieu NOE 2022 年 6 月 23 日
I have a csv file 28526 x 1. These are a single variable for 45 years. I want to find the mean of 45 years (45 x1) seperately. But all 45 years unequal ranges. How to find the mean?
-----------------------------------------------------------------------------------
clc;clear all
a = readmatrix('His_wind.csv');
b = a(20279:20981, 1);
b(b == 9999) = NaN;
c = b/10;
d = mean(c,'omitnan');
--------------------------------------------------------------------------------------
Here I am selecting each range of values and calculating mean seperately for each year. Please advice on how to do it together.
  2 件のコメント
ANIE
ANIE 2022 年 6 月 23 日
please find the data file attached. The header P DEW seperates each year

サインインしてコメントする。

採用された回答

Mathieu NOE
Mathieu NOE 2022 年 6 月 23 日
hello
try this :
clc;clear all
a = readmatrix('saf_wind.csv');
ind_header = find(isnan(a)); % lines with 'P DEW' (seperates each year)
% this for loop will do the yearly averaging on data between first and last
% detected lines with 'P DEW' - data before the first P DEW and data after
% the last P DEW mark are not computed
for ci =1:numel(ind_header)-1
start = ind_header(ci);
stop = ind_header(ci+1);
data = a(start:stop);
data(data > 9000) = NaN; % remove the 9999 from data (using > 9000 instead of == 9999 for potential rounding issues
d(ci) = mean(data/10,'omitnan');
end
plot(d)
  4 件のコメント
Mathieu NOE
Mathieu NOE 2022 年 6 月 23 日
My pleasure !

サインインしてコメントする。

その他の回答 (1 件)

Jonas
Jonas 2022 年 6 月 23 日
編集済み: Jonas 2022 年 6 月 23 日
dat=readmatrix('saf_wind.csv');
dat(dat==9999)=[];
whereIsNan=find(isnan(dat));
yourMeans=zeros(1,numel(whereIsNan)+1);
for partNr=1:numel(whereIsNan)+1
if partNr==1
currVec=dat(1:whereIsNan(partNr(1))-1);
elseif partNr==numel(whereIsNan)+1
currVec=dat(whereIsNan(end)+1:end);
else
currVec=dat(whereIsNan(partNr-1)+1:whereIsNan(partNr)-1);
end
yourMeans(partNr)=mean(currVec);
end
  1 件のコメント
ANIE
ANIE 2022 年 6 月 23 日
Thanks a lot. This also works. Only I had to divide it by 10 as i needed the matrix in fraction.

サインインしてコメントする。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by