MATLAB按年份对数据进行排序并创建矩阵



我有以下数据示例:

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

我想按年份对数据进行排序,然后绘制值。我使用forfind编写了一个代码。然而,使用fprintf,我只得到命令窗口中的输出,如下所示:

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

那么,在for循环中,是否有其他方法可以创建矩阵c=[year;sum_vehicles]?

我的代码如下:

dados = dlmread('c:experimentalfrota_detranfrota-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

看起来您想要对数据进行排序和聚合:

[sorted ia ic] = unique(dados(:,1));
c = [sorted accumarray(ic, dados(:,2))];

相关内容

  • 没有找到相关文章