MATLAB 怎么把一个向量里出现的数据作为横坐标,出现的次数作为纵坐标画图

8.376271
8.378271
8.375271
8.378271
8.377271
8.378271
8.378271
8.378271
8.378271
8.378271
8.378271
8.217058
8.217058
8.217058
8.217058
8.217058
8.217058
8.217058
8.217058
8.217058
8.378271
8.378271
8.378271
8.378271
8.378271
类似于这样的数组,出现那个数值就把哪个数值作为横坐标,一共出现的次数作为纵坐标

% solve the question in Baidu Zhidao
% edited by Beenwa
% edited on 2015-1-29 
clear;close all;clc;

data=[8.376271
    8.378271
    8.375271
    8.378271
    8.377271
    8.378271
    8.378271
    8.378271
    8.378271
    8.378271
    8.378271
    8.217058
    8.217058
    8.217058
    8.217058
    8.217058
    8.217058
    8.217058
    8.217058
    8.217058
    8.378271
    8.378271
    8.378271
    8.378271
    8.378271];

A2=unique(data);
n=histc(data,A2);
figure;stem(A2,n,'ko');
xlabel('向量值');ylabel('出现次数');

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-08-24

举例如下,你可以看看每一步运行的结果,就知道是怎么回事了:


% 用一个简单的序列举例

a = [ 2 6 2 3 5 3 2 3 6 2 ]';

% 排下序,方便后面获取每个数的位置

a = sort( a );

% 得到a的不重复数列,并获取每个不重复数的位置

[ c ia ] = unique( a );

% 每个不重复数字的位置的差即为每个数出现的次数

y = diff( [ 0; ia ] );

stem( c, y, 'MarkerFaceColor', [ 1 0 0 ] );


本回答被提问者采纳
相似回答