تابع توزیع تجمعی (cumulative distributive function) - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تابع توزیع تجمعی (cumulative distributive function)

+3 امتیاز
سلام.

بازهم در مبحث تعدیل هیستوگرام به  تابع توزیع تجمعی برخورد کردم این تابع چه کاری انجام میده و چه نقشی داره؟
سوال شده بهمن 29, 1392  بوسیله ی parisa (امتیاز 46)   6 8 12

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

سلام.

توزیع تجمعی یعنی وقتی PMF  را محاسبه کردید بعد آن مقدار هر اندیس در CDF برابر است با مقدار مجموع همه PMF های کوچکتر و مساوی با آن اندیس می باشد.

اگر PMF به صورت زیر باشد:

CDF به صورت زیر خواهد شد.

کد C++ محاسبه CDF به صورت زیر می باشد:


#include "stdafx.h"
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
#include <numeric>
using namespace std;

void computePMF(const vector<int> &src,vector<float> &dst){
	float sum = (float)std::accumulate(src.begin(), src.end(), 0);

	dst.resize(src.size());
	for (size_t i=0; i < src.size();i++)
		dst[i] = src[i] / sum;

}
void computeCDF(const vector<float> pmf,vector<float> &cdf){
	cdf.resize(pmf.size());
	float sum=0;
	for (size_t i=0; i < pmf.size();i++){
		cdf[i] = sum + pmf[i];
		sum += pmf[i];
	}

}
int _tmain(int argc, _TCHAR* argv[])
{
	
    vector<int> hist(10);
	for (auto &item : hist)
		item = rand()%5;

	vector<float> pmf;
	computePMF(hist,pmf);

	vector<float> cdf;
	computeCDF(pmf,cdf);
	for (auto item :cdf)
		cout << item << endl;

	
	
	return 0;
}

 

پاسخ داده شده بهمن 30, 1392 بوسیله ی haniye sarbazi (امتیاز 983)   2 6 15
انتخاب شد بهمن 30, 1392 بوسیله ی مصطفی ساتکی
...