0

2006 年から 2100 年のデータを含む .mat ファイルがあります。毎年、行数が異なります。2006 年の行数、2007 年の行数などを数える必要があります。

列ごとのセットアップは次のとおりです。年、月、日、緯度、経度 同じ年のエントリを含む行の数を数え、その情報を含む配列で配列を取得したいだけです。

for または while ループが機能するはずだと考えていますが、それを修正する方法がわかりません。

4

3 に答える 3

2

データが数値行列であると仮定すると、次のことができます。

num_lines2006 = sum(data(:,1)==2006);
data2006 = data(data(:,1)==2006),:);

対応する年の行数を含む列を追加する場合は、ループを使用したソリューションを次に示します。

for k=size(data,1):-1:1
    num_year(k,1) = sum(data(:,1)==data(k,1));
end
data = [data num_year];

ループなしのソリューションは次のとおりです。

[unq_year,~,idx] = unique(data(:,1),'stable');
num_year = grpstats(data(:,1),unq_year,@numel);
data = [data num_year(idx)];
于 2013-04-08T19:12:23.643 に答える
1

数値エントリをカウントするには、使用したい場合がありますhistc

years = unique(data(:,1);
counts = histc(data(:,1),years);
于 2013-04-08T20:19:50.497 に答える