精华内容
下载资源
问答
  • 问题描述 这是一幅基因芯片的荧光图像,检测图像的...(2)图像分割需要获得边缘信息,用canny算子检测边缘 (3)对图像做闭运算,图像很小的点江北腐蚀掉,从而显现出大的边缘 (4)用findContours方法找出边缘 (5) bo...

    问题描述

    这是一幅基因芯片的荧光图像,检测图像的ROI区域,对这个区域内的阴性点(弱)和阳性点(强)的数量进行统计,并标出点的位置。
    在这里插入图片描述

    ROI区域检测:

    思路:
    (1)观察到图像对比度很低,首先对图像进行对比度增强
    (2)图像分割需要获得边缘信息,用canny算子检测边缘
    (3)对图像做闭运算,图像中很小的点江北腐蚀掉,从而显现出大的边缘
    (4)用findContours方法找出边缘
    (5) boundingRect方法检测外轮廓
    (6)获得ROI并返回裁剪后的图片
    代码:

    Mat get_ROI_image(Mat &src_image)
    {
    	Mat imageConvert;
    	src_image.convertTo(imageConvert, src_image.type(), 3, 0);//对比度增强y = alpha*x + beta; alpha = 3, beta = 0;
    
    	Mat src_gray;
    	cvtColor(imageConvert, src_gray, COLOR_BGR2GRAY);
    
    	//使用Canny检测边缘  
    	Mat canny_image;
    	Canny(src_gray, canny_image, 80, 126, (3, 3));
    	//imshow("canny_image", canny_image);
    
    	//高级形态学闭运算函数  
    	Mat closed_image;
    	//自定义形态学元素结构
    	Mat element5(9, 9, CV_8U, cv::Scalar(1));//5*5正方形,8位uchar型,全1结构元素
    	morphologyEx(canny_image, closed_image, cv::MORPH_CLOSE, element5);
    	//imshow("closed_image", closed_image);
    	//waitKey(0);
    
    
    	//外部加框
    	//检测连通域,每一个连通域以一系列的点表示,FindContours方法只能得到第一个域
    	vector<vector<Point>> contours;
    	vector<Vec4i> hierarchy;
    	findContours(closed_image, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);//CV_RETR_EXTERNAL只检测外部轮廓,可根据自身需求进行调整
    
    	Rect maxRect, secondRect;
    	for (int index = 0; index >= 0; index = hierarchy[index][0])
    	{
    		Rect rect = boundingRect(contours[index]);//检测外轮廓
    		if (index == 0)
    		{
    			maxRect = rect;
    			secondRect = rect;
    		}
    		if (rect.area() > maxRect.area())
    		{
    			secondRect = maxRect;
    			maxRect = rect;
    		}
    
    	}
    	Mat ROI_image;
    	ROI_image = src_image(secondRect);
    
    	rectangle(src_image, secondRect, Scalar(0, 0, 255), 3);//对外轮廓加矩形框
    	imshow("src_image_plus_rect", src_image);
    	imwrite("src_image_plus_rect.bmp", src_image);
    
    	cout << "完成检测";
    	return ROI_image;
    }
    
    

    检测结果
    在这里插入图片描述

    两类点的识别与数量统计:

    找阳性点思路:
    (1)对ROI图像做ACE处理,得到高对比度的图像
    (2)然后对图像进行高阈值二值化处理,以获得阳性点
    (3)用canny找出边缘
    (4)用findContours方法找出轮廓
    (5)drawContours方法画出轮廓
    (6)返回轮廓数量近似为阳性点数量

    找阴性点思路:
    (1)对ROI图像做ACE处理,得到高对比度的图像
    (2)然后对图像进行低阈值二值化处理,以获得全部点
    (3)用canny找出边缘
    (4)用findContours方法找出轮廓
    (5)drawContours方法画出轮廓
    (6)阴性点数量=全部点的轮廓数量-阳性点的轮廓数量

    ACE代码:

    Mat ACE(Mat &src, int C = 3, int n = 3, float MaxCG = 7.5)
    {
    	int rows = src.rows;
    	int cols = src.cols;
    
    	Mat meanLocal; //图像局部均值  
    	Mat varLocal;  //图像局部方差  
    	Mat meanGlobal;//全局均值
    	Mat varGlobal; //全局标准差  
    
    	blur(src.clone(), meanLocal, Size(n, n));
    	Mat highFreq = src - meanLocal;//高频成分 
    
    	varLocal = matrixWiseMulti(highFreq, highFreq);
    	blur(varLocal, varLocal, Size(n, n));
    	//换算成局部标准差  
    	varLocal.convertTo(varLocal, CV_32F);
    	for (int i = 0; i < rows; i++){
    		for (int j = 0; j < cols; j++){
    			varLocal.at<float>(i, j) = (float)sqrt(varLocal.at<float>(i, j));
    		}
    	}
    	meanStdDev(src, meanGlobal, varGlobal);
    	Mat gainArr = 0.5 * meanGlobal / varLocal;//增益系数矩阵  
    
    	//对增益矩阵进行截止  
    	for (int i = 0; i < rows; i++){
    		for (int j = 0; j < cols; j++){
    			if (gainArr.at<float>(i, j) > MaxCG){
    				gainArr.at<float>(i, j) = MaxCG;
    			}
    		}
    	}
    	gainArr.convertTo(gainArr, CV_8U);
    	gainArr = matrixWiseMulti(gainArr, highFreq);
    	Mat dst2 = meanLocal + C*highFreq;
    	return dst2;
    }
    

    ACE处理后的效果:
    在这里插入图片描述

    计算点的数量代码:

    size_t cal_point_num(Mat &img, String str)
    {
    	Mat canny_output;
    	vector<vector<Point> > contours;
    	vector<Vec4i> hierarchy;
    	size_t point_num;
    	CvFont font;
    	
    	// canny 边缘检测
    	Canny(img, canny_output, thresh, thresh * 2, 3);
    	//imshow("canny", canny_output);
    
    	// 寻找轮廓
    	findContours(canny_output, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0));
    
    	Mat drawing = Mat::zeros(canny_output.size(), CV_8UC3);
    	// 画出轮廓
    	for (size_t i = 0; i< contours.size(); i++) {
    		Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
    		drawContours(drawing, contours, (int)i, color, 2, 8, hierarchy, 0, Point());
    	}
    	point_num = contours.size();
    	imshow(str, drawing);
    	imwrite(str, drawing);
    	return point_num;
    }
    

    高阈值二值化处理结果:
    在这里插入图片描述
    画出的阳性点轮廓结果:
    在这里插入图片描述
    低阈值二值化处理结果:
    在这里插入图片描述
    画出的全部点轮廓结果:
    在这里插入图片描述

    完整代码逻辑:

    (1)读入待处理图片,获得ROI区域
    (2)一些特定的自定义去噪处理
    (3)ACE处理
    (4)阈值二值化处理
    (5)计算点的数量

    完整代码:

    #include <iostream>
    #include <opencv2\opencv.hpp>
    #include<opencv.hpp>
    using namespace std;
    using namespace cv;
    
    Mat get_ROI_image(Mat &src_image);//获得矩形有效区域
    void draw_hist(Mat &img_gray);//画出一幅图像的直方图
    Mat ACE(Mat &src, int C, int n, float MaxCG);//对一幅图像做ACE处理
    void drop_noise(Mat &img);//去掉图像的一些噪声
    size_t cal_point_num(Mat &img, String str);//canny边缘计算及画出轮廓
    
    
    int thresh = 100;
    int max_thresh = 255;
    RNG rng(12345);
    
    int main() {
    	Mat src_image = imread("作业4图像2.bmp", CV_LOAD_IMAGE_UNCHANGED);
    	if (src_image.empty()){
    	cout << "图像加载失败" << endl;
    	}
    	imshow("src_image", src_image);
    
    	Mat ROI_image = get_ROI_image(src_image);//获得区域
    	imshow("ROI_image", ROI_image);
    	cvtColor(ROI_image, ROI_image, COLOR_BGR2GRAY);//转换成灰度图
    
    	drop_noise(ROI_image);//一些特定的自定义的去噪处理
    	imshow("ROI_drop_noise_image", ROI_image);
    
    	Mat ROI_ACE_image = ACE(ROI_image, 8, 11, 15);//进行ACE处理
    	imshow("ROI_ACE_image", ROI_ACE_image);
    	imwrite("ROI_ACE_image.bmp", ROI_ACE_image);
    
    
    	Mat threshold_image;
    	threshold(ROI_ACE_image, threshold_image, 200, 255, THRESH_BINARY);//高阈值二值化,以获得阳性点
    	imshow("threshold_image", threshold_image);
    	imwrite("threshold_image1.bmp", threshold_image);
    
    
    	size_t light_point_num, dark_point_num, whole_point_num;
    	light_point_num = cal_point_num(threshold_image, "light_point.bmp");//计算阳性点数量
    	threshold(ROI_ACE_image, threshold_image, 60, 255, THRESH_BINARY);//低阈值二值化,以获得全部点
    	imshow("threshold_image2", threshold_image);
    	imwrite("threshold_image2.bmp", threshold_image);
    
    	whole_point_num = cal_point_num(threshold_image, "whole_point.bmp");//计算所有点数量
    	cout << "light_point_num:" << light_point_num << endl;
    	cout << "dark_point_num:" << whole_point_num - light_point_num << endl;//阴性点数量=总的点数量-阳性点数量
    
    	waitKey(0);
    	return 0;
    }
    
    
    void drop_noise(Mat &img)//自定义的去噪处理
    {
    	for (int i = 0; i < img.rows; i++)
    	{
    		for (int j = 0; j < img.cols; j++)
    		{
    			if (img.at<unsigned char>(i, j) >= 69)//图像中有些盐噪声,通过设置阈值滤除掉
    			{
    				img.at<unsigned char>(i, j) = 0;
    			}
    		}
    	}
    }
    
    
    
    Mat matrixWiseMulti(Mat &m1, Mat &m2){
    	Mat dst = m1.mul(m2);
    	return dst;
    }
    
    //float MaxCG:对高频成分的最大增益值,int n:局部半径,int C:对高频的直接增益系数  
    Mat ACE(Mat &src, int C = 3, int n = 3, float MaxCG = 7.5)
    {
    	int rows = src.rows;
    	int cols = src.cols;
    
    	Mat meanLocal; //图像局部均值  
    	Mat varLocal;  //图像局部方差  
    	Mat meanGlobal;//全局均值
    	Mat varGlobal; //全局标准差  
    
    	blur(src.clone(), meanLocal, Size(n, n));
    	//imshow("低通滤波", meanLocal);
    	Mat highFreq = src - meanLocal;//高频成分 
    	//imshow("高频成分", highFreq);
    
    	varLocal = matrixWiseMulti(highFreq, highFreq);
    	blur(varLocal, varLocal, Size(n, n));
    	//换算成局部标准差  
    	varLocal.convertTo(varLocal, CV_32F);
    	for (int i = 0; i < rows; i++){
    		for (int j = 0; j < cols; j++){
    			varLocal.at<float>(i, j) = (float)sqrt(varLocal.at<float>(i, j));
    		}
    	}
    	meanStdDev(src, meanGlobal, varGlobal);
    	Mat gainArr = 0.5 * meanGlobal / varLocal;//增益系数矩阵  
    
    	//对增益矩阵进行截止  
    	for (int i = 0; i < rows; i++){
    		for (int j = 0; j < cols; j++){
    			if (gainArr.at<float>(i, j) > MaxCG){
    				gainArr.at<float>(i, j) = MaxCG;
    			}
    		}
    	}
    	gainArr.convertTo(gainArr, CV_8U);
    	gainArr = matrixWiseMulti(gainArr, highFreq);
    	Mat dst2 = meanLocal + C*highFreq;
    	return dst2;
    }
    
    
    void draw_hist(Mat &img_gray)
    {
    	//需要计算图像的哪个通道(bgr空间需要确定计算 b或g或r空间)    
    	const int channels[1] = { 0 };
    
    	//直方图的每一个维度的 柱条的数目(就是将灰度级分组)  
    	int histSize[] = { 256 };   //如果这里写成int histSize = 256;   那么下面调用计算直方图的函数的时候,该变量需要写 &histSize  
    
    	//定义一个变量用来存储 单个维度 的数值的取值范围    
    	float midRanges[] = { 0, 256 };
    
    	//确定每个维度的取值范围,就是横坐标的总数    
    	const float *ranges[] = { midRanges };
    
    	//输出的结果存储的 空间 ,用MatND类型来存储结果  
    	MatND dstHist;
    
    	calcHist(&img_gray, 1, channels, Mat(), dstHist, 1, histSize, ranges, true, false);
    
    	//calcHist  函数调用结束后,dstHist变量中将储存了 直方图的信息  用dstHist的模版函数 at<Type>(i)得到第i个柱条的值  at<Type>(i, j)得到第i个并且第j个柱条的值    
    
    	//首先先创建一个黑底的图像,为了可以显示彩色,所以该绘制图像是一个8位的3通道图像    
    	Mat drawImage = Mat::zeros(Size(256, 256), CV_8UC3);
    
    	//一个图像的某个灰度级的像素个数(最多为图像像素总数),可能会超过显示直方图的所定义的图像的尺寸,因此绘制直方图的时候,让直方图最高的地方只有图像高度的90%来显示  
    
    	//先用minMaxLoc函数来得到计算直方图后的像素的最大个数    
    	double g_dHistMaxValue;
    	minMaxLoc(dstHist, 0, &g_dHistMaxValue, 0, 0);
    
    	//遍历直方图得到的数据    
    	//int myvalue[256];
    	for (int i = 0; i < 256; i++)
    	{
    		cout << i << ":" << dstHist.at<float>(i) << endl;
    		int value = cvRound(256 * 0.9 *(dstHist.at<float>(i) / g_dHistMaxValue));
    
    		line(drawImage, Point(i, drawImage.rows - 1), Point(i, drawImage.rows - 1 - value), Scalar(255, 0, 0));
    	}
    	imshow("【直方图】", drawImage);
    	//waitKey(0);
    }
    
    Mat get_ROI_image(Mat &src_image)
    {
    	Mat imageConvert;
    	src_image.convertTo(imageConvert, src_image.type(), 3, 0);//对比度增强y = alpha*x + beta; alpha = 3, beta = 0;
    	//imshow("imageConvert", imageConvert);
    
    	Mat src_gray;
    	cvtColor(imageConvert, src_gray, COLOR_BGR2GRAY);
    	//imshow("src_gray", src_gray);
    
    	//使用Canny检测边缘  
    	Mat canny_image;
    	Canny(src_gray, canny_image, 80, 126, (3, 3));
    	//imshow("canny_image", canny_image);
    
    	//高级形态学闭运算函数  
    	Mat closed_image;
    	//自定义形态学元素结构
    	Mat element5(9, 9, CV_8U, cv::Scalar(1));//5*5正方形,8位uchar型,全1结构元素
    	morphologyEx(canny_image, closed_image, cv::MORPH_CLOSE, element5);
    	//imshow("closed_image", closed_image);
    	//waitKey(0);
    
    
    	//外部加框
    	//检测连通域,每一个连通域以一系列的点表示,FindContours方法只能得到第一个域
    	vector<vector<Point>> contours;
    	vector<Vec4i> hierarchy;
    	findContours(closed_image, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);//CV_RETR_EXTERNAL只检测外部轮廓,可根据自身需求进行调整
    
    	//Mat contoursImage(closed_image.rows, closed_image.cols, CV_8U, Scalar(255));
    
    	Rect maxRect, secondRect;
    	for (int index = 0; index >= 0; index = hierarchy[index][0])
    	{
    		Scalar color(rand() & 255, rand() & 255, rand() & 255);
    
    		Rect rect = boundingRect(contours[index]);//检测外轮廓
    		if (index == 0)
    		{
    			maxRect = rect;
    			secondRect = rect;
    		}
    		if (rect.area() > maxRect.area())
    		{
    			secondRect = maxRect;
    			maxRect = rect;
    		}
    
    	}
    
    	Mat ROI_image;
    	ROI_image = src_image(secondRect);
    
    	rectangle(src_image, secondRect, Scalar(0, 0, 255), 3);//对外轮廓加矩形框
    	imshow("src_image_plus_rect", src_image);
    	imwrite("src_image_plus_rect.bmp", src_image);
    
    	cout << "完成检测";
    	return ROI_image;
    }
    
    size_t cal_point_num(Mat &img, String str)
    {
    	Mat canny_output;
    	vector<vector<Point> > contours;
    	vector<Vec4i> hierarchy;
    	size_t point_num;
    	CvFont font;
    
    	// canny 边缘检测
    	Canny(img, canny_output, thresh, thresh * 2, 3);
    
    	// 寻找轮廓
    	findContours(canny_output, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0));
    
    	Mat drawing = Mat::zeros(canny_output.size(), CV_8UC3);
    
    	// 画出轮廓
    	for (size_t i = 0; i< contours.size(); i++) {
    		Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
    		drawContours(drawing, contours, (int)i, color, 2, 8, hierarchy, 0, Point());
    	}
    	point_num = contours.size();
    
    	imshow(str, drawing);
    	imwrite(str, drawing);
    	return point_num;
    }
    
    展开全文
  • 统计图形-茎叶

    千次阅读 2015-06-30 16:08:05
    Leaf display)又称“枝叶”,由统计学家约翰托奇( Arthur Bowley)设计,它的思路是将数组的数按位数进行比较,将数的大小基本不变或变化不大的位作为一个主干(茎),将变化大的位的数作为分枝(叶),列在主干...
    
    描述:
    茎叶图(Stem-and-Leaf display)又称“枝叶图”,由统计学家约翰托奇( Arthur Bowley)设计,它的思路是将数组中的数按位数进行比较,将数的大小基本不变或变化不大的位作为一个主干(茎),将变化大的位的数作为分枝(叶),列在主干的后面,这样就可以清楚地看到每个主干后面的几个数,每个数具体是多少。

    茎叶图是一个与直方图相类似的特殊工具,但又与直方图不同,茎叶图保留原始资料的资讯,直方图则失去原始资料的讯息。将茎叶图茎和叶逆时针方向旋转90度,实际上就是一个直方图,可以从中统计出次数,计算出各数据段的频率或百分比。从而可以看出分布是否与正态分布或单峰偏态分布逼近。

    特点:
    1、用茎叶图表示数据有两个优点:一是从统计图上没有原始数据信息的损失,所有数据信息都可以从茎叶图中得到;二是茎叶图中的数据可以随时记录,随时添加,方便记录与表示。
    2、茎叶图只便于表示个位之前相差不大的数据,而且茎叶图只方便记录两组的数据,两个以上的数据虽然能够记录,但是没有表示两个记录那么直观、清晰。

    R中使用stem函数绘制茎叶图,在控制台进行输出,如下所示:
    > x<-c(89,79,57,46,1,24,71,5,6,9,10,15,16,19,22,31,40,41,52,55,60,61,65,69,70,75,85,91,92,94)
    > stem(x)
    
      The decimal point is 1 digit(s) to the right of the |
    
      0 | 1569
      1 | 0569
      2 | 24
      3 | 1
      4 | 016
      5 | 257
      6 | 0159
      7 | 0159
      8 | 59
      9 | 124
    

    stem额外提供scale参数调整茎的粒度,scale数值越小,茎的粒度越粗,width参数设置最大的宽度,需要容纳茎叶图行宽,若width参数过小,输出将被截断,atom参数指定数据容忍度,数据差异在容忍度范围内的被当作同一个数。调整了scale参数后的示例如下:
    > x<-c(89,79,57,46,1,24,71,5,6,9,10,15,16,19,22,31,40,41,52,55,60,61,65,69,70,75,85,91,92,94)
    > stem(x,scale=0.5)
    
      The decimal point is 1 digit(s) to the right of the |
    
      0 | 15690569
      2 | 241
      4 | 016257
      6 | 01590159
      8 | 59124
    

    width参数过小的示例,输出被截断了:
    > x<-c(89,79,57,46,1,24,71,5,6,9,10,15,16,19,22,31,40,41,52,55,60,61,65,69,70,75,85,91,92,94)
    > stem(x,scale=0.5,width=16)
    
      The decimal point is 1 digit(s) to the right of the |
    
      0 | 1569
      2 | 241
      4 | 0162
      6 | 0159
      8 | 5912
    

    相同的数据集在Minitab中的输出,采用缺省设置:
     4   0  1569
     8   1  0569
     10  2  24
     11  3  1
     14  4  016
    (3)  5  257
     13  6  0159
     9   7  0159
     5   8  59
     3   9  124
    

    中间的括弧表示数据趋中的情况,中位数出现在附近。
    
    展开全文
  • 4 描述性统计量和统计图

    万次阅读 2017-02-08 11:28:26
     统计图包括箱线图、直方图、经验分布函数图、正态概率图、P-P图和Q-Q图。 本章以下表的数据示例,对其进行操作演示。 1 .描述性统计量包括均值、方差、标准差、最大值、最小值、极差、位数、分位数、众数、...

    更多MATLAB数据分析视频请点击,或者在网易云课堂上搜索《MATLAB数据分析与统计》 http://study.163.com/course/courseMain.htm?courseId=1003615016

    .描述性统计量包括均值、方差、标准差、最大值、最小值、极差、中位数、分位数、众数、变异系数、中心矩、原点炬、偏度、峰度、协方差和相关系数。

     统计图包括箱线图、直方图、经验分布函数图、正态概率图、P-P图和Q-Q图。

    本章以下表中的数据示例,对其进行操作演示。


    1 .描述性统计量包括均值、方差、标准差、最大值、最小值、极差、中位数、分位数、众数、变异系数、中心矩、原点炬、偏度、峰度、协方差和相关系数。

      1.1 均值

        MATLAB中用mean函数来计算样本均值,样本均值描述了样本观测数据取值相对集中的中心位置。

        例:用mean函数计算工作表中的平均成绩(计算平均成绩的时候要去掉缺考的成绩,即成绩为0的)

      %读取文件1.xls中的第一个工作表中的总成绩的数据即G2:G52,默认的就是读取第一个工作表中的数据,无需指定
    %score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','Sheet1','G2:G52');
      score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
      score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩
      score_mean=mean(score)     %调用mean函数计算平均值

      score_mean =

          79
     有时候样本均值会掩盖很多信息,你和马云平均一下你也是亿万土豪,这说明了样本均值受异常值的影响比较大,有一定的不合理性。

     1.2 方差和标准差

      样本方差有如下两种形式的定义:

     

     

       样本标准差是样本方差的算术平方根,相应的它也有两种形式的定义:

     

      样本方差或标准差表述了样本观测数据变异程度的大小,MATLAB统计工具箱中提供了var和std函数,分别用来计算样本方差和标准差。

     调用格式

      var(x)=var(x,0):用公式1计算方差

      var(x,1)                  :用公式2计算方差

     std(x)=std(x,0):用公式3计算标准差

     std(x,1)                   :用公式4计算标准差

    例:对上一列中的数据中的总成绩求方差和标准差

    %读取文件1.xls中的第一个工作表中的总成绩的数据即G2:G52,默认的就是读取第一个工作表中的数据,无需指定
    %score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','Sheet1','G2:G52');
    score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
    score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

    %计算方差和标准差
    ss1=var(score)  %式1
    ss1=var(score)  %式1
    ss2=var(score,1) %式2
    s1=std(score)    %式3
    s1=std(score,0)   %式3
    s2=std(score,1)   %式4


    ss1 =

       103


    ss1 =

       103


    ss2 =

      100.8980


    s1 =

       10.1489


    s1 =

       10.1489


    s2 =

       10.0448


     1.3 最大值和最小值

     max函数用来计算样本最大值,min函数用来计算样本最小值

    score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
    score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

    score_max=max(score)
    score_min=min(score)


    score_max =

        98


    score_min =

        49


     1.4 极差

      range函数用来计算样本的极差(最大值-最小值),极差可以作为样本观测数据变异程度大小的一个简单度量

      score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
      score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

      score_range=range(score)


    score_range =

        49

    1.5 中位数

     将样本观测值从小到大依次排列,位于中间的那个观测值,称为样本中位数,它描述了样本观测数据的中间位置。median函数用来计算样本的中位数

     score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
    score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩
     score_meidan=median(score)

    score_meidan =

        80


    1.6 分位数

    分位数就是先把一列数按从小到大排序,如果一共有n个数,那么四分之一分位数就是第n*0.25个数,四分之三分位数就是第n*0.75个数,以此类推,p分位数就是第n*p个数.如果n*p不是整数则往最接近的较大的整数上归。样本的0.5分位数就是样本的中位数。

    MATLAB统计工具箱中提供了quantile和prctilte,均可用来计算样本的分位数,一个用小数表示分位数,一个用百分数表示分位数

    score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
    score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

    score_m1=quantile(score,[0.25,0.5,0.75])  %计算样本的0.25,0.5,0.75分位数
     socre_m2=prctile(score,[25,50,75])  %计算样本的25%,50%,75%分位数


    score_m1 =

       73.0000   80.0000   85.5000


    socre_m2 =

       73.0000   80.0000   85.5000


    1.7 众数

      众数描述了样本数据中出现次数最多的数。mode函数用来计算样本的众数

     score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
    score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

    score_mode=mode(score)


    score_mode =

        80


    1.8 变异系数

     变异系数是衡量数据变异程度的(和方差标准差一样),当进行两个或多个变量变异程度的比较时,如果平均值相同,可以直接用标准差来比较。如果平均值不同,比较其变异程度就不能用标准差,而需要采用标准差与平均数的比值来比较。标准差与平均值的比值称为变异系数。MATLAB中没有专门计算变异系数的函数,需要利用std和mean函数的比值来计算

      score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
      score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

      score_cvar=std(score)/mean(score)  %计算变异系数

     score_cvar =

        0.1285

    1.9  原点矩

     定义样本的k阶元电矩为,(样本数据的k次长的均值),样本的1阶原点矩就是样本均值

      score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
      score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

     A2=mean(score.^2)

    A2 =

       6.3419e+03


    1.10 中心矩

      定义样本的k阶中心矩为,(样本中个元素减去均值的k次方的均值),显然,样本的1阶中心矩为0,二阶中心矩为样本的方差。moment函数用来计算样本的k阶中心矩

      score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
      score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

      B1=moment(score,1)  %计算样本的1阶中心矩
     B2=moment(score,2)  %计算样本的2阶中心矩

    B1 =

         0


    B2 =

      100.8980


    1.11 偏度

     样本偏度反映了总体分布的对称信息,偏度越接近0,说明分布越对称,否则分布越偏斜。若偏度为负,说明样本服从左偏分布(概率密度的左尾巴长,顶点偏向右边);若偏度为正,样本服从有偏分布(概率密度的右尾巴长,顶点偏向左边),MATLAB中的skewness函数用来计算样本的偏度,计算公式为

     

    其中B2和B3分别为样本的2阶和3阶中心矩。

      score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
      score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

     score_skewness=skewness(score)  %计算样本偏度

    score_skewness =

       -0.7929

    1.12 峰度

      样本峰度反映了总体分布密度曲线在其峰值附近的陡峭程度。正态分布的峰度为3,如果样本峰度大于3,说明总体分布密度曲线在其峰值附近比正态分布来得陡。反之,小于 3,说明总体分布密度曲线在其峰值附近比正态分布平缓。计算公式,B2,B4分别是样本的2阶和4阶中心矩,MATLAB中kurtosis函数用来计算样本峰度。

      score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
      score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

      score_kurtosis=kurtosis(score)

     score_kurtosis =

        4.3324


    1.13 协方差

      协方差是描述变量间相关程度的统计量。两随机向量X,Y之间的协方差定义为cov(X,Y)=E[(X-E(X))(Y-E(Y))],,E表示数学期望,MATLAB中用cov函数用来计算变量间的协方差矩阵。

    all函数:检测矩阵中是否全为非零元素
    any函数:检测矩阵中是否有非零元素,如果有,则返回1,否则,返回0。用法和all一样

    用法:

    B=all(A)

    B=all(A.dim); %dim=1或dim=2


    B = all(A):
    如果A是一个向量,如果所有的元素都是非零的,则返回1,如果有一个元素为零,则返回0。
    如果A是一个矩阵,则返回一个行向量,用于检测每一列是否全为非零元素,如果某一列中有一个元素为零,则返回0,如果某一列中全为非零元素,则返回1,由此构成一个行向量。
    B = all(A, 1)
    返回一个行向量,可以认为all(A, 1)等价于all(A)

    B = all(A, 2)
    返回一个列向量,用于检测每一行是否全为非零元素,如果某一行中有一个元素为零,则返回0,如果某一行中全为非零元素,则返回1,由此构成一个列向量。

    %计算平时成绩和期末成绩间的协方差(平时成绩与期末成绩的相关程度)
     %需要读取平时成绩和期末成绩这两列
     XY=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','E2:F52');
     XY=XY(all(XY,2),:);
     conXY=cov(XY)

    conXY =

        9.2245   19.8588
       19.8588   54.0578

    返回的conXY是一个2x2的对称矩阵,即平时成绩与期末成绩的协方差矩阵。其中,主对角线上的9.2245是平时成绩的方差,54.0578是期末成绩的方差。副对角线上的19.8588是平时成绩与期末成绩的协方差


    1.14 相关系数

     在用协方差描述变量间的相关程度时会受到变量的量纲和数量级的影响,即使对于同样的一组变量,当变量的量纲和数量级发生变化时,协方差也会随之改变。因此,应先对变量先标准化变换,然后再计算协方差,把先标准化变换后做协方差运算定义为变量间的相关系数,相关系数是一个无单位的量,绝对值不超过1,它描述了变量间的线性相关程度。当变量间相关系数为0时,变量间不存在线性趋势关系,但可能存在非线性趋势关系;当变量间相关系数的绝对值为1时,一个变量是另一变量的线性函数;当变量间相关系数越接近1时,变量间线性趋势越明显。MATLAB中的corrcoef函数用来计算变量间相关系数矩阵。

     XY=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','E2:F52');
     XY=XY(all(XY,2),:);

    Rxy=corrcoef(XY)  %计算平时成绩与期末成绩的相关系数

    Rxy =

        1.0000    0.8893
        0.8893    1.0000

    由结果可以看出,平时成绩与期末成绩的相关系数为0.8893,说明平时成绩与期末成绩间存在明显的线性递增趋势。



    2. 统计图

     2.1 箱线图

    箱线图,又称作箱须图(box-whiskerplot)是利用数据中的五个特征值——最小值、第一四分位点、中值、第三四分位点、最大值来描述数据的图形。箱线图可以粗略的估计数据是否具有对称性,粗略观察数据的分散程度,特别可用于对几个样本的比较。


     

    箱线图的做法:

     (1)画一个箱子,其左侧线为样本0.25分位数m0.25位置,右侧线为样本0.75分位数m0.75位置,在样本中位数(即0.5分位数m0.5)位置上画一条数线,画在箱子内。这个箱子包含了样本中50%的数据

     (2)在箱子左右两侧各引出一条水平线,左侧画直max{min(x),m0.25-1.5(m0.75-m0.25)},右侧画值min(max(x),m0.25+1.5(m0.75-m0.25)),落在左右边界之外的样本点被称为异常点,用红色‘+’号标出。

     箱线图非常直观地反映了样本数据的分散程度以及总体分布的对称性,利用箱线图可以直观的识别样本中的异常值。

    MATLAB统计工具箱中提供了boxplot函数绘制箱线图。

    调用格式:

    boxplot(X,‘Name’,value);

    ‘Name’是箱线图的一些属性,value是该属性的值

    例如:

    Name为‘notch’,当value为on时,产生的是凹盒图(有切口的box图),off时产生矩箱图(无切口的box图)。

    Name为‘orientatiaon’,当value为horizontal时,箱图是水平画的,vertical时为垂直箱图


     score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
      score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

      figure;
     boxlabel={'考试成绩箱线图'};  %箱线图的标签
     boxplot(score,boxlabel,'notch','on','orientation','horizontal');
    % boxplot(score)
     xlabel('考试成绩');



    2.2 频数(频率)直方图

     频数(频率)直方图的做法如下:

     (1)将样本观测值x1,x2,......,xn从小到大排序并去除多余的重复值,得到x(1)<x(2)<......<x(l).

     (2)适当选取略小于与x(1)的数a和略大于x(l)的数b,将区间(a,b)随意分为k个不想交的小区间,记第i个小区间为Ii,其长度为hi。

     (3)把样本观测值逐个分到各区间内,并计算样本观测值落在各区间内的频数ni,及频率fi=ni/n.

     (4)在x轴上截取各区间,并以各区间为底,以ni为高左小矩形,就得到频数直方图;如果以fi=ni/n为高做小矩形,就得到频率直方图。

      MATLAB统计工具箱中提供了hist函数用来绘制频数直方图,用法

     hist(x,n):  x是要统计的数据,n表示用多少个小矩形(默认10个)

      还提供了ecdf和ecdfhist函数,用来绘制频率直方图

       [f,xc]=ecdf(x) :  调用ecdf函数计算xc处的经验分布函数值f,返回值作为ecdfhist函数的参数绘制频率直方图

       ecdfhist(f,xc,n) :n表示用多少个小矩阵(默认10个)

    例:

     score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
      score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

    figure;
     hist(score);
     xlabel('考试成绩')
     ylabel('频数')
     title('频数直方图');
     
     figure;
     [f,xc]=ecdf(score);
     ecdfhist(f,xc);
     xlabel('考试成绩')
     ylabel('频率');
     title('频率直方图');

     


    2.3 经验分布函数图

    根据2.2中直方图的做法,可以得到样本频数和频率分布表如下所示

    观测值          x(1)      x(2)  ........     x(l)          总计

    频数               n1        n2   ........       nl             n

    频率               f1          f2   .........       fl              1

    样本分布函数(经验分布函数)到定义为


    经验分布函数图是阶梯状态,反映了样本观测数据分布情况。

    MATLAB统计工具箱中提供了cdfplot函数来绘制样本经验分布函数图,ecdf函数计算各点处的经验分布函数值

    用法:

    [h,stats]=cdfplot(x):   x是输入的数据,返回值h为图形句柄,stats为结构变量,stats中有5个字段,分别对应最小值、最大值、平均值、中位数和标准差

    [f,xc]=ecdf(x) :  x是输入数据,返回xc处的经验分布函数值f,xc向量的长度为length(x)+1

    例:

    score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52'); score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

    figure;
    [h,stats]=cdfplot(score)
    set(h,'color','k','linewidth',2); %设置一下图形h的属性,便于观察
    % [f,xc]=ecdf(score)
    % figure;
    % plot(xc,f)



    2.4 正态概率图

    正态概率图用于正态分布的检验,正态分布的概率图描绘的是一条直线(参考线),每一个样本观测值对应上的一个‘+’号,如果图中的‘+’号都集中在参考线附加,说明样本观测数据近似服从正态分布;若果偏离参考线的‘+’号越多,说明样本观测数据不服从正态分布。

    MATLAB统计工具箱中提供了normplot函数,用来绘制正态概率图。

    调用格式:

    normplot(x):x是输入的数据

    score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
    score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

    figure;
    normplot(score)


    从图中可以发现,处理左下角两个异常点之外,其余的‘+’号均在参考线附加,说明输入的数据近似服从正态分布。


    2.5 p-p图

     p-p图用来检测数据是否服从指定的分布,和normplot定义类似,normplot函数是检测是否服从正态分布,而porbplot不仅可以检测是否服从正态分布,还可以检测是否服从其他指定的分布,只需在调用函数的时候指定一下是哪种分布。

     调用格式:

     probplot('name',x) :x是输入检验的数据,‘name’指定检验哪种分布,name可以取

    name                说明

    exponential      指数分布

    extreme value  极值分布

    lognormal           对数分布

    normal                正态分布

    rayleigh                瑞利分布

    weibull                 韦伯分布

    例:

    score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');
    score=score(score>0);  %只把成绩不为0的数据取出来,即去掉缺考成绩

    figure;
    probplot('normal',score)


    和用normplot函数检验结果是一样的。


    2.6 q-q图

     q-q图不仅能检验样本是否服从指定分布,还能检测两个样本是否服从相同的分布。

     MATLAB统计工具箱中提供了qqplot函数绘制q-q图。

     下面调用qqplot函数绘制两个班级成绩数据的q-q图,观测这两个班级的成绩数据是否服从相同的分布。

    %读取Excel中的班级数据即B2:B52
    banji=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','B2:B52');

    %读取总成绩数据,即G2:G52中的数据
    score=xlsread('C:\Users\Administrator\Desktop\MATLAB\MATLAB数据分析与统计\chapter4\1.xls','G2:G52');

    %去除缺考的数据
    banji=banji(score>0);
    score=score(score>0);

    %提取两个班级的总成绩
    score1=score(banji==60101);
    score2=score(banji==60102);

    %绘制两个班级成绩数据的q-q图
    qqplot(score1,score2);


    图中可以看,偏离参考线的‘+’号比较多,可以认为两个班的成绩不服从相同的分布

    更多MATLAB数据分析视频请点击,或者在网易云课堂上搜索《MATLAB数据分析与统计》 http://study.163.com/course/courseMain.htm?courseId=1003615016

    展开全文
  • 统计图超级表格微视频关键词: 如何制作统计图「超级表格微视频」第十期提升效率、 增强免疫力,尽在超级表格微视频!请关注每周的公众号更新,3分钟让您玩转超级表格!如何绘制统计图搜索what is统计图这是一张第一...


    统计图


    超级表格 微视频
    关键词 :   如何制作统计图

    「超级表格微视频」第十期

    提升效率、 增强免疫力,尽在超级表格微视频!

    class="video_iframe" data-vidtype="1" height="501" width="668" frameborder="0" data-src="https://v.qq.com/iframe/preview.html?width=500&height=375&auto=0&vid=e0348ggvl3j" allowfullscreen="" scrolling="no" src="https://v.qq.com/iframe/player.html?width=668&height=501&auto=0&vid=e0348ggvl3j&encryptVer=6.0&platform=61001&cKey=QD/NUV/k1GnGMQSO7cBlqJPfphjI2/HdI7Yqxc/S6KHALnIPbAye0AXcfiEwd/3d" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; display: block; z-index: 1; width: 668px !important; height: 501px !important; overflow: hidden;">

    请关注每周的公众号更新,3分钟让您玩转超级表格!

    如何绘制统计图
    搜索


    what  is

    统计图


    这是一张第一季度工资表,包括了1、2、3月的各个部门所发的工资明细。


    基于这张表,我们利用超级表格可以绘制一张统计图。统计该表格记录数中各个部门的数量。

    我们也可以按照月份进行统计。


    当然,也可以统计到各个月份不同部门的所发的工资金额, 以及整个季度,不同部门所发的工资金额。



    统计图功能个性化十足,不同的搭配可以得到不同的效果。合理的运用超级表格统计图功能,能够帮助大家方便、直观地进行数据分析,大大地提升工作效率。


    超级表格统计图



    How   to

    绘制统计图


    第一步:有一张需要进行绘图统计的表格。

    例如这张工资明细表中有月份列、每个人所处的部门列以及每个人所发的工资列。


    注意:工资列一定要将列类型设置为【数字】,否则无法将工资列作为Y轴进行统计图的绘制。


    第二步:表格数据整理完毕后,点击屏幕右上角的「视图」→创建统计图

    统计图的设置界面分别是统计图的统计范围、统计图的绘制设置以及统计图的预览。


    第三步:行数统计模式

    系列指的是统计的直接对象,而行数统计模式指的是对系列的个数统计。

    例如此时,我们以部门作为系列进行行数统计就可以非常直观的看到市场部、技术部和运营部在该表格中出现的次数。


    类别指的是我们可以将统计对象基于某个维度进行分类处理。

    例如我们把部门作为系列,而把类别选择为月份,点击预览后,则可以统计不同月份的各部门数量。


    去掉类别勾选后,又能够统计整个季度的各部门数量。


    How     to

    统计工资金额


    列值计算模式

    当不勾选列值计算时,Y轴默认的是数量,而勾选列值计算后,会弹出一个Y轴的选择框。在这里可以进行Y轴的选择,从而代替行数计算模式下的数量。


    注意:这里的Y轴只能选择原表格中“数字”列类型的列。因此,这里我们可以选择工资。

    点击预览后,就可以直接显示整个季度发往各个部门的工资金额。



    共享统计图视图

    绘制好的统计图会作为一个视图保存下来,我们可以通过共享表格的方式,将该统计图视图单独的共享出去


    协作者登录后可以直接打开看到统计图,并且统计图会随着原数据表中数据的变动自动更新。


    收集与整理信息,一张超级表格搞定!

    多人协作的在线表格 优美的企业办公软件

    关注超级表格公众号:超级表格

    关注超级表格微博:超级表格-官博


    展开全文
  • 统计图像的直方 ,绘制直方
  • Android自定义控件4——统计图View

    万次阅读 多人点赞 2016-05-31 01:07:20
    1、介绍周末在逛慕课网的时候,看到了一张学习...yissan的博客,未经允许严禁转载 http://blog.csdn.net/yissan2、实现分析我们要实现这样一个折线统计图,必要的信息主要有下面几个先看纵轴,纵轴需要的信息有最大值
  • 扩增子统计绘图2散点:Beta多样性

    千次阅读 2017-08-21 20:37:56
    写在前面优秀的作品都有三部分曲,如骇客帝国、教父、指环王等。...《扩增子统计绘图》系列文章介绍《扩增子统计绘图》是之前发布的《扩增子图表解读》和《扩增子分析解读》的进阶篇,是在大家可以看懂
  • 箱形图可以统计出单变量数据的离散程度,将数据的离散程度以及分布区间清晰直观地表现出来,同时可以突出异常数据值。箱形作为一种重要的统计图表,在众多的学科和领域中都有着越来越多的应用。 它由五个数值点...
  • java实现各种数据统计图(柱形图,饼图,折线图)

    万次阅读 多人点赞 2012-05-24 22:28:45
    最近在做数据挖掘的课程设计,需要将数据分析的结果很直观的展现给用户,这就要用到数据统计图,要实现这个功能就需要几个第三方包了: 1. jfreechart-1.0.13.jar 2. jcommon-1.0.16.jar 3. gnujaxp.jar   ...
  • PHP+mysql+Highcharts实现饼状统计图

    千次阅读 2015-07-01 07:49:48
    PHP+mysql+Highcharts实现饼状统计图 Mysql 首先我们建一张・chart_pie・表作为统计数据。 -- edit http://www.lai18.com -- 表的结构 `chart_pie` -- CREATE TABLE IF NOT EXISTS `chart_pie...
  • 直方图统计像素

    千次阅读 2019-12-04 22:16:28
    通过直方对图像的像素进行简单统计,也可以得到图像的很多信息,利用这些信息可以进行图片增强,图片分割和图片匹配。 简单统计: 一般将图片转变为灰度,这样是为了减少图片信息的维度,对统计进行简化。 ...
  • 1、为了进行全国分区的交通道路管理,现要统计途径全国各省份的主要公路总长度,并制作统计直方(本例数据依照国家标准)。 1)**标识公路数据;**打开ArcMap软件,加载全国各县区与主要公路数据。打开【分析工具...
  • 该扩展使得参考软件的编码器和解码器能够以可配置的方式将统计信息写出,进而加载到合适的yuv播放器或者重叠在重建yuv序列上,或者在可选范围内用于统计分析。 可视化播放器可以选择开源YUV播放器YUView (下载...
  • 我想在大地上画满窗子,让所有习惯黑暗的眼睛习惯...本节的内容如下:SQL Server统计信息列级统计信息统计信息与执行计划统计信息与内存分配开销预估模型SQL Server统计信息 说到统计信息,就一定要提到查询优化器,
  • 对fa文件的序列进行处理 # 获取序列的id和序列信息 # 统计每个id对应的序列的长度 # 对序列长度进行统计 # 绘制直方 """ import os import pandas as pd from collections import Counter import ...
  • R语言实战笔记–第六&七章 统计图形介绍及基本统计方法标签(空格分隔): R语言 箱线图 直方 t检验 Kruskal-Wallis检验 Friedman检验 R语言实战的第六章和第七章介绍了一些基本的统计图形(直方、条形、饼图...
  • 详解Oracle统计信息

    千次阅读 2019-04-19 09:53:00
    优化器统计范围: 表统计; --行数,块数,行平均长度;all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN; 列统计; --列唯一值的数量(NDV),NULL值的数量,数据分布; --DBA_TAB_COLUMNS:NUM_DISTINCT,NUM_...
  • 这些框架,类库或者工具是30多款主流软件分析对比筛选得出,读者可以根据自己需要进行进一步筛选。 一. Flex: Flex是什么?  Flex 是一个免费的开放源框架,可用于构建交互性较高、具有表现力的 Web 应用程序...
  • 收集oracle统计信息

    千次阅读 2018-07-27 12:57:58
    优化器统计范围: 表统计; --行数,块数,行平均长度;all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN;列统计; --列唯一值的数量(NDV),NULL值的数量,数据分
  • 本网对Markdown排版支持较差,对格式不满意的用户请跳转至 或“宏基因组”公众号阅读;...第三部《扩增子统计绘图》:即是对结果进行可视和统计检验,达到出版级的图表结果。《扩增子统计绘图》系列文章介绍《扩
  • SYBASE ASE统计信息

    千次阅读 2010-11-17 16:32:00
    在SYBASE ASE,SQL语句执行的时间主要取决于查询执行器对数据 的 访问路径和处理方式,也就是执行计划,而最优的执行计划由查询优化器...表,一个是systabstats表,用于存储表/索引级的统计信息,另一个是syssta
  • 随着工作经历的积累,越来越感觉到,大量的关系型数据库的性能问题,其根源在于统计信息。这里说的是根源,其实很多时候大家觉得的那些什么索引失效等都只是表象。当然,不能一概而论,还有很多问题如配置问题、设计...
  • 图片像素点统计

    千次阅读 2019-05-26 14:02:17
    题目就是如何统计一张图片的气泡数目,以及每个气泡的面积。 上面这张图就是案例,里面白色的都是不规则形态的气泡。当拿到这个题目时看一眼就大致有些思路。因为怎么说也是学了数据结构的人嘛!当时就是想借用...
  • 统计直方-累加直方

    万次阅读 2014-10-16 17:13:19
    常见的直方有两种:统计直方,累积直方。我们将分别实验两种直方在图像聚类和检索的性能。 l 统计直方  为利用图像的特征描述图像,可借助特征的统计直方。图像特征的统计直方实际是一个1-D...
  • 图像处理之直方图统计及C++实现

    千次阅读 2021-01-30 11:37:49
    可以选择对数据提取特征、再对特征进行计数,这里的特征可以是梯度的长度、梯度的方向、颜色或者其他任何可以反映数据特点的特征,也就是说,直方是一种用来揭示数据分布的统计特性的工具。直方的维度通常比...
  • 先打开栅格文件所在的工作空间(文件),然后获取其所有的波段,访问每一个波段有时候波段已经有直方统计信息,有时候没有这些信息,可以使用ComputeStatsAndHist()函数对其进行计算(数据量较大时,可能耗时较长)...
  • MySQL统计信息简介

    千次阅读 2018-01-23 00:00:00
    作者:王小龙@网易乐得DBA原文地址:http://mp.weixin.qq.com/s/698g5lm9CWqbU0B_p0nLMwMySQL执行SQL会经过SQL...查询优化器决定SQL如何执行,依赖于数据库的统计信息,下面我们介绍MySQL 5.7innodb统计信息的相关

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 348,541
精华内容 139,416
关键字:

从统计图中可以得到什么信息