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

作者&投稿:邗怡 (若有异议请与网页底部的电邮联系)
matlab如何把一个数组里出现的数据作为纵坐标~

比如数组是a
直接
plot(a)

>> figure(1)
hold;
hd(1)=plot(a1,b1,'r.');%红色
hd(2)=plot(a2,b2,'g.');%绿色
hd(3)=plot(a3,b3,'b.');%蓝色
hd(4)=plot(a4,b4,'m.');%紫红色
legend(hd([1 2 3 4 ]),'a1 b1','a2 b2','a3 b3','a4 b4');
title('4 group of data');
下面是效果图

% 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('出现次数');



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


% 用一个简单的序列举例

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 ] );