MATLAB сортировка данных и создание матрицы по годам

У меня есть следующий образец данных:

2001    1
2000    1
1974    1
2007    1
2007    2
2007    6
2007    3
1994    1
1986    1
2007    1

Я хочу отсортировать данные по году, а затем построить график значений. Я написал код используя for а также find, Однако, используя fprintf Я получил только вывод в командном окне, как это:

Ano-modelo 2009 | 88242 veiculos 
Ano-modelo 2010 | 125822 veiculos 
Ano-modelo 2011 | 132360 veiculos 
Ano-modelo 2012 | 167984 veiculos 

Итак, есть ли альтернативный способ, что внутри for цикл, чтобы создать матрицу с = [год; sum_vehicles]?

Мой код следующий:

dados = dlmread('c:\experimental\frota_detran\frota-detran_total.dat');

ano = 1922:2015;

for i = ano

%procura somente os valores a cada ano
pro = find(dados(:,1)==i);
%lista somente os valores
qt = dados(pro,:);
%soma o ano modelo em questao
total = sum (qt(:,2));


%exibe os valores para cada ano modelo
fprintf('%s %d %s %d %s \n','Ano-modelo',i ,'|',total, 'veiculos');

end

1 ответ

Похоже, вы хотите, чтобы данные были отсортированы и агрегированы:

[sorted ia ic] = unique(dados(:,1));
c = [sorted accumarray(ic, dados(:,2))];
Другие вопросы по тегам