码迷,mamicode.com
首页 > 其他好文 > 详细

【基于rssi室内定位报告】rssi分布情况标识位置

时间:2017-08-28 19:58:07      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:frequency   技术分享   sqrt   label   sqlite3   class   res   def   max   

 

 

技术分享

 

 

技术分享

 

 

技术分享

技术分享

 

 

import matplotlib

matplotlib.use(‘Agg‘)
import numpy as np
from numpy import array
from matplotlib import pyplot
from scipy import integrate
import math
import time

from sys import path

path.append(‘D:\pymine\clean\Gauss_rssi_model\import_function‘)
from draw import *

import matplotlib.mlab as mlab

zhfont1 = matplotlib.font_manager.FontProperties(fname=‘C:\Windows\Fonts\STKAITI.TTF‘)

import sqlite3

from openpyxl import Workbook

print(‘ing‘)


def gen_rssi_model(rssi_list):
    x_list = sorted(list(set(rssi_list)))
    frequency_first_count, frequency_first_value, frequency_first_index, frequency_first_value_frequency, frequency_second_count, frequency_second_value, frequency_second_index, frequency_second_value_frequency = 0, 0, 0, 0, 0, 0, 0, 0

    rssi_list_len = len(rssi_list)
    for i in x_list:
        i_value, i_count, i_index = i, rssi_list.count(i), x_list.index(i)
        if i_count > frequency_first_count:
            frequency_first_value, frequency_first_count, frequency_first_index, frequency_first_value_frequency = i_value, i_count, i_index, i_count / rssi_list_len
        if i_count < frequency_first_count and i_count > frequency_second_count:
            frequency_second_value, frequency_second_count, frequency_second_index, frequency_second_value_frequency = i_value, i_count, i_index, i_count / rssi_list_len

    res_dic, gauss_rssi_model_type = {}, 1
    tmp_max, tmp_min = max(frequency_first_index, frequency_second_index), min(frequency_first_index,
                                                                               frequency_second_index)
    frequency_first_second_middle_value, frequency_first_second_middle_count, frequency_first_second_middle_index =         x_list[tmp_min + 1], rssi_list.count((x_list[tmp_min + 1])), tmp_min + 1
    len_ = len(x_list)
    for i in range(0, len_, 1):
        if i <= tmp_min or i >= tmp_max:
            continue
        i_value = x_list[i]
        i_count = rssi_list.count(i_value)
        i_index = i
        if i_count < frequency_first_second_middle_count:
            frequency_first_second_middle_value, frequency_first_second_middle_count, frequency_first_second_middle_index = i_value, i_count, i_index

    if frequency_first_second_middle_value > (frequency_first_value + frequency_second_value) * 0.5:
        gauss_rssi_model_type = 2

    res_dic[‘gauss_rssi_model_type‘], res_dic[‘frequency_first_value‘], res_dic[‘frequency_first_count‘], res_dic[
        ‘frequency_first_index‘], res_dic[‘frequency_second_value‘], res_dic[‘frequency_second_count‘], res_dic[
        ‘frequency_second_index‘], res_dic[‘frequency_first_second_middle_value‘], res_dic[
        ‘frequency_first_second_middle_count‘], res_dic[
        ‘frequency_first_second_middle_index‘] = gauss_rssi_model_type, frequency_first_value, frequency_first_count, frequency_first_index, frequency_second_value, frequency_second_count, frequency_second_index, frequency_first_second_middle_value, frequency_first_second_middle_count, frequency_first_second_middle_index

    return res_dic


def pdf_Normal_distribution_integrate(average_, standard_deviation, x1, x2):
    f = lambda x: (np.exp(-(x - average_) ** 2 / (2 * standard_deviation ** 2))) / (
        np.sqrt(2 * np.pi)) / standard_deviation
    # return integrate.quad(f, x1, x2)
    # TODO MODIFY  try to be more precise
    # return integrate.quad(f, -np.inf, x1)[0] - integrate.quad(f, -np.inf, x2)[0]
    return integrate.quad(f, -np.inf, x2)[0] - integrate.quad(f, -np.inf, x1)[0]


# TODO DEL
# mlab.normpdf(len_, np_average, np_std)
def pdf_Normal_distribution_integrate_2_linear_combination(average0, standard_deviation0, average1, standard_deviation1,
                                                           x1, x2, weight0=0.5, weight1=0.5):
    p0, p1 = pdf_Normal_distribution_integrate(average0, standard_deviation0, x1,
                                               x2), pdf_Normal_distribution_integrate(average1, standard_deviation1, x1,
                                                                                      x2)
    return weight0 * p0 + weight1 * p1


def get_list_quartern_1_3(l):
    quartern_index_1 = math.ceil(len(l) / 4)
    quartern_value_1 = l[quartern_index_1]
    quartern_index_3 = quartern_index_1 * 3
    quartern_value_3 = l[quartern_index_3]
    dic_ = {}
    dic_[‘quartern_index_1‘] = quartern_index_1
    dic_[‘quartern_value_1‘] = quartern_value_1

    dic_[‘quartern_index_3‘] = quartern_index_3
    dic_[‘quartern_value_3‘] = quartern_value_3

    return dic_


def draw_frequency_hist(l_, title_, xlabel=‘rssi‘, dir_=‘./savefig/‘):
    rssi_list = l_
    np_std = np.std(rssi_list)
    np_average = np.average(rssi_list)
    data_ = array(l_)
    pyplot.hist(data_, 300)
    xlabel = ‘%s--std=%s,average=%s,sample_number=%s‘ % (xlabel, np_std, np_average, len(rssi_list))
    pyplot.xlabel(xlabel)
    pyplot.ylabel(‘Frequency‘)
    localtime_ = time.strftime("%y%m%d%H%M%S", time.localtime())
    title_ = ‘%s%s‘ % (title_, localtime_)
    pyplot.title(title_, fontproperties=zhfont1)
    dir_ = ‘%s%s‘ % (dir_, title_)
    pyplot.savefig(dir_)
    pyplot.close()


def draw_probability_density(rssi_list, title_, xlabel=‘rssi‘, dir_=‘./savefig/‘):
    np_std = np.std(rssi_list)
    np_average = np.average(rssi_list)
    x_list = sorted(list(set(rssi_list)))
    len_ = len(rssi_list)
    loop_ = len(x_list)
    x, y = [], []
    for i in range(0, loop_, 1):
        val = x_list[i]
        probability_density = rssi_list.count(val) / len_
        x.append(val)
        y.append(probability_density)
    pyplot.plot(x, y)
    xlabel = ‘%s--std=%s,average=%s,sample_number=%s‘ % (xlabel, np_std, np_average, len(rssi_list))
    pyplot.xlabel(xlabel)
    pyplot.ylabel(‘ProbabilityDensity‘)
    localtime_ = time.strftime("%y%m%d%H%M%S", time.localtime())
    title_ = ‘%s%s‘ % (title_, localtime_)
    pyplot.title(title_, fontproperties=zhfont1)
    dir_ = ‘%s%s‘ % (dir_, title_)
    pyplot.savefig(dir_)
    pyplot.close()



def from_db_to_res(db, sql, odd_even=0):
    conn = sqlite3.connect(db)
    cursor = conn.execute(sql)
    res_dic, counter_ = {}, 0
    for row in cursor:
        counter_ += 1
        if counter_ % 2 == odd_even:
            continue
        db_id, gather_point, mac, rssi, timestamp = row
        gather_point = gather_point.replace(‘\n‘, ‘‘)
        if gather_point not in res_dic:
            res_dic[gather_point] = {}
            res_dic[gather_point][‘rssi_list‘] = []
        res_dic[gather_point][‘rssi_list‘].append(rssi)

    for gather_point in res_dic:
        rssi_list = sorted(res_dic[gather_point][‘rssi_list‘])
        np_std = np.std(rssi_list)
        np_average = np.average(rssi_list)
        res_dic[gather_point][‘rssi_list_np_std‘] = np_std
        res_dic[gather_point][‘rssi_list_np_average‘] = np_average

        rssi_model = gen_rssi_model(rssi_list)

        res_dic[gather_point][‘rssi_model‘] = rssi_model
        list_quartern_1_3_dic = get_list_quartern_1_3(rssi_list)

        res_dic[gather_point][‘quartern_index_1‘], res_dic[gather_point][‘quartern_value_1‘], res_dic[gather_point][
            ‘quartern_index_3‘], res_dic[gather_point][‘quartern_value_3‘] =             list_quartern_1_3_dic[‘quartern_index_1‘], list_quartern_1_3_dic[‘quartern_value_1‘], list_quartern_1_3_dic[
                ‘quartern_index_3‘], list_quartern_1_3_dic[‘quartern_value_3‘]

    return res_dic


db, sql = ‘wifi_Tom_0814.db‘, ‘SELECT * FROM wifi‘
Tom_home_dic_even = from_db_to_res(db, sql)
Tom_home_dic_odd = from_db_to_res(db, sql, 1)
db, sql = ‘wifi_beta_office_0812am.db‘, ‘SELECT * FROM wifi WHERE belongpoint IN ("sw_office_Bata_table") ‘
Beta_table_dic_even = from_db_to_res(db, sql)
Beta_table_dic_odd = from_db_to_res(db, sql, 1)

k = ‘sw_office_Bata_table‘
rssi_list = Beta_table_dic_odd[k][‘rssi_list‘]
title_ = ‘%s%s‘ % (‘o-‘, k)
draw_frequency_hist_probability_density(rssi_list, title_, xlabel=‘rssi‘, dir_=‘./savefig/‘)
k = ‘sw_office_Bata_table‘
rssi_list = Beta_table_dic_even[k][‘rssi_list‘]
title_ = ‘%s%s‘ % (‘e-‘, k)
draw_frequency_hist_probability_density(rssi_list, title_, xlabel=‘rssi‘, dir_=‘./savefig/‘)

k = ‘下沙88栋‘
rssi_list = Tom_home_dic_odd[k][‘rssi_list‘]
title_ = ‘%s%s‘ % (‘o-‘, k)
draw_frequency_hist_probability_density(rssi_list, title_, xlabel=‘rssi‘, dir_=‘./savefig/‘)
k = ‘下沙88栋‘
rssi_list = Tom_home_dic_even[k][‘rssi_list‘]
title_ = ‘%s%s‘ % (‘e-‘, k)
draw_frequency_hist_probability_density(rssi_list, title_, xlabel=‘rssi‘, dir_=‘./savefig/‘)

report_dic = {}


def compute_relative_integrate(dic_, dic_x, type_, direction_=‘Tom_Beta‘):
    global report_dic
    if direction_ not in report_dic:
        report_dic[direction_] = {}
    report_dic[direction_][type_] = {}
    report_dic[direction_][type_][‘simple_dic‘] = {}
    if direction_ == ‘Tom_Beta‘:
        dic_, dic_x = dic_[‘下沙88栋‘], dic_x[‘sw_office_Bata_table‘]
    elif direction_ == ‘Tom_Tom‘:
        dic_, dic_x = dic_[‘下沙88栋‘], dic_x[‘下沙88栋‘]
    elif direction_ == ‘Beta_Tom‘:
        dic_, dic_x = dic_[‘sw_office_Bata_table‘], dic_x[‘下沙88栋‘]
    elif direction_ == ‘Beta_Beta‘:
        dic_, dic_x = dic_[‘sw_office_Bata_table‘], dic_x[‘sw_office_Bata_table‘]

    average_, standard_deviation, x1, x2 = dic_[‘rssi_list_np_average‘], dic_[‘rssi_list_np_std‘], dic_x[
        ‘quartern_value_1‘], dic_x[‘quartern_value_3‘]
    res = pdf_Normal_distribution_integrate(average_, standard_deviation, x1, x2)
    simple_dic = {}
    simple_dic[‘integrand‘], simple_dic[‘to‘], simple_dic[‘res‘] = dic_, dic_x, res
    report_dic[direction_][type_][‘simple_dic‘] = simple_dic
    return res


# TODO MODIFY
dic_, dic_x = Tom_home_dic_even, Beta_table_dic_even
Tom_e_Beta_e_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘e_e‘)

dic_, dic_x = Tom_home_dic_even, Beta_table_dic_odd
Tom_e_Beta_o_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘e_o‘)

dic_, dic_x = Tom_home_dic_odd, Beta_table_dic_even
Tom_o_Beta_e_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘o_e‘)

dic_, dic_x = Tom_home_dic_odd, Beta_table_dic_odd
Tom_o_Beta_o_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘o_o‘)

dic_, dic_x = Tom_home_dic_odd, Tom_home_dic_odd
Tom_o_Tom_o_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘o_o‘, ‘Tom_Tom‘)

dic_, dic_x = Tom_home_dic_odd, Tom_home_dic_even
Tom_o_Tom_e_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘o_e‘, ‘Tom_Tom‘)

dic_, dic_x = Tom_home_dic_even, Tom_home_dic_even
Tom_e_Tom_e_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘e_e‘, ‘Tom_Tom‘)

dic_, dic_x = Tom_home_dic_even, Tom_home_dic_odd
Tom_e_Tom_o_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘e_o‘, ‘Tom_Tom‘)

dic_, dic_x = Beta_table_dic_even, Tom_home_dic_even
Beta_e_Tom_e_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘e_e‘, ‘Beta_Tom‘)

dic_, dic_x = Beta_table_dic_even, Tom_home_dic_odd
Beta_e_Tom_o_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘e_o‘, ‘Beta_Tom‘)

dic_, dic_x = Beta_table_dic_odd, Tom_home_dic_even
Beta_o_Tom_e_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘o_e‘, ‘Beta_Tom‘)

dic_, dic_x = Beta_table_dic_odd, Tom_home_dic_odd
Beta_o_Tom_o_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘o_o‘, ‘Beta_Tom‘)

dic_, dic_x = Beta_table_dic_odd, Beta_table_dic_odd
Beta_o_Beta_o_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘o_o‘, ‘Beta_Beta‘)

dic_, dic_x = Beta_table_dic_odd, Beta_table_dic_even
Beta_o_Beta_e_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘o_e‘, ‘Beta_Beta‘)

dic_, dic_x = Beta_table_dic_even, Beta_table_dic_even
Beta_e_Beta_e_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘e_e‘, ‘Beta_Beta‘)

dic_, dic_x = Beta_table_dic_even, Beta_table_dic_odd
Beta_e_Beta_o_pdf_integrate = compute_relative_integrate(dic_, dic_x, ‘e_o‘, ‘Beta_Beta‘)

for direction_ in report_dic:
    for type_ in report_dic[direction_]:
        ll = []
        simple_dic = report_dic[direction_][type_][‘simple_dic‘]
        to_dic, integrand_dic = simple_dic[‘to‘], simple_dic[‘integrand‘]
        to_quartern_index_1, to_quartern_index_3, to_quartern_value_1, to_quartern_value_3, to_rssi_list_np_average, to_rssi_list_np_std =             to_dic[‘quartern_index_1‘], to_dic[‘quartern_index_3‘], to_dic[‘quartern_value_1‘], to_dic[
                ‘quartern_value_3‘],             to_dic[‘rssi_list_np_average‘], to_dic[‘rssi_list_np_std‘]
        integrand_quartern_index_1, integrand_quartern_index_3, integrand_quartern_value_1, integrand_quartern_value_3, integrand_rssi_list_np_average, integrand_rssi_list_np_std =             integrand_dic[‘quartern_index_1‘], integrand_dic[‘quartern_index_3‘], integrand_dic[‘quartern_value_1‘],             integrand_dic[‘quartern_value_3‘], integrand_dic[‘rssi_list_np_average‘], integrand_dic[‘rssi_list_np_std‘]
        to_rssi_model, integrand_rssi_model = to_dic[‘rssi_model‘], integrand_dic[‘rssi_model‘]

        to_gauss_rssi_model_type, to_frequency_first_value, to_frequency_first_count, to_frequency_first_index, to_frequency_second_value, to_frequency_second_count, to_frequency_second_index, to_frequency_first_second_middle_value, to_frequency_first_second_middle_count, to_frequency_first_second_middle_index =             to_rssi_model[‘gauss_rssi_model_type‘], to_rssi_model[‘frequency_first_value‘],             to_rssi_model[‘frequency_first_count‘], to_rssi_model[‘frequency_first_index‘],             to_rssi_model[‘frequency_second_value‘], to_rssi_model[‘frequency_second_count‘],             to_rssi_model[‘frequency_second_index‘], to_rssi_model[‘frequency_first_second_middle_value‘],             to_rssi_model[‘frequency_first_second_middle_count‘], to_rssi_model[
                ‘frequency_first_second_middle_index‘]

        integrand_gauss_rssi_model_type, integrand_frequency_first_value, integrand_frequency_first_count, integrand_frequency_first_index, integrand_frequency_second_value, integrand_frequency_second_count, integrand_frequency_second_index, integrand_frequency_first_second_middle_value, integrand_frequency_first_second_middle_count, integrand_frequency_first_second_middle_index =             integrand_rssi_model[‘gauss_rssi_model_type‘], integrand_rssi_model[‘frequency_first_value‘],             integrand_rssi_model[‘frequency_first_count‘], integrand_rssi_model[‘frequency_first_index‘],             integrand_rssi_model[‘frequency_second_value‘], integrand_rssi_model[‘frequency_second_count‘],             integrand_rssi_model[‘frequency_second_index‘], integrand_rssi_model[‘frequency_first_second_middle_value‘],             integrand_rssi_model[‘frequency_first_second_middle_count‘], integrand_rssi_model[
                ‘frequency_first_second_middle_index‘]

        res_single = pdf_Normal_distribution_integrate(integrand_rssi_list_np_average, integrand_rssi_list_np_std,
                                                       to_quartern_value_1, to_quartern_value_3)

        # 双峰模型:假设两个“子分布”均为正太分布且离散程度相同均等于全量数据的方差
        res_double = pdf_Normal_distribution_integrate_2_linear_combination(integrand_frequency_first_value,
                                                                            integrand_rssi_list_np_std,
                                                                            integrand_frequency_second_value,
                                                                            integrand_rssi_list_np_std,
                                                                            to_quartern_value_1, to_quartern_value_3)
        report_dic[direction_][type_][‘simple_dic‘][‘res_single‘], report_dic[direction_][type_][‘simple_dic‘][
            ‘res_double‘] = res_single, res_double

dd = 8




# wb = Workbook()
# worksheet = wb.active
# title_ = ‘direction_, type_, res_single, res_double, to_rssi_list_np_average, to_rssi_list_np_std, to_quartern_index_1, to_quartern_value_1, to_quartern_index_3, to_quartern_value_3, to_gauss_rssi_model_type, to_frequency_first_value, to_frequency_first_count, to_frequency_first_index, to_frequency_second_value, to_frequency_second_count, to_frequency_second_index, to_frequency_first_second_middle_value, to_frequency_first_second_middle_count, to_frequency_first_second_middle_index,  integrand_rssi_list_np_average, integrand_rssi_list_np_std,integrand_quartern_index_1, integrand_quartern_value_1, integrand_quartern_index_3,integrand_quartern_value_3,integrand_gauss_rssi_model_type, integrand_frequency_first_value, integrand_frequency_first_count, integrand_frequency_first_index, integrand_frequency_second_value, integrand_frequency_second_count, integrand_frequency_second_index, integrand_frequency_first_second_middle_value, integrand_frequency_first_second_middle_count, integrand_frequency_first_second_middle_index‘
# title_l = title_.replace(‘ ‘, ‘‘).split(‘,‘)
# worksheet.append(title_l)
# for direction_ in report_dic:
#     for type_ in report_dic[direction_]:
#         ll = []
#         simple_dic = report_dic[direction_][type_][‘simple_dic‘]
#         to_dic, integrand_dic = simple_dic[‘to‘], simple_dic[‘integrand‘]
#         to_quartern_index_1, to_quartern_index_3, to_quartern_value_1, to_quartern_value_3, to_rssi_list_np_average, to_rssi_list_np_std = #             to_dic[‘quartern_index_1‘], to_dic[‘quartern_index_3‘], to_dic[‘quartern_value_1‘], to_dic[
#                 ‘quartern_value_3‘], #             to_dic[‘rssi_list_np_average‘], to_dic[‘rssi_list_np_std‘]
#         integrand_quartern_index_1, integrand_quartern_index_3, integrand_quartern_value_1, integrand_quartern_value_3, integrand_rssi_list_np_average, integrand_rssi_list_np_std = #             integrand_dic[‘quartern_index_1‘], integrand_dic[‘quartern_index_3‘], integrand_dic[‘quartern_value_1‘], #             integrand_dic[‘quartern_value_3‘], integrand_dic[‘rssi_list_np_average‘], integrand_dic[‘rssi_list_np_std‘]
#         to_rssi_model, integrand_rssi_model = to_dic[‘rssi_model‘], integrand_dic[‘rssi_model‘]
#
#         to_gauss_rssi_model_type, to_frequency_first_value, to_frequency_first_count, to_frequency_first_index, to_frequency_second_value, to_frequency_second_count, to_frequency_second_index, to_frequency_first_second_middle_value, to_frequency_first_second_middle_count, to_frequency_first_second_middle_index = #             to_rssi_model[‘gauss_rssi_model_type‘], to_rssi_model[‘frequency_first_value‘], #             to_rssi_model[‘frequency_first_count‘], to_rssi_model[‘frequency_first_index‘], #             to_rssi_model[‘frequency_second_value‘], to_rssi_model[‘frequency_second_count‘], #             to_rssi_model[‘frequency_second_index‘], to_rssi_model[‘frequency_first_second_middle_value‘], #             to_rssi_model[‘frequency_first_second_middle_count‘], to_rssi_model[
#                 ‘frequency_first_second_middle_index‘]
#
#         integrand_gauss_rssi_model_type, integrand_frequency_first_value, integrand_frequency_first_count, integrand_frequency_first_index, integrand_frequency_second_value, integrand_frequency_second_count, integrand_frequency_second_index, integrand_frequency_first_second_middle_value, integrand_frequency_first_second_middle_count, integrand_frequency_first_second_middle_index = #             integrand_rssi_model[‘gauss_rssi_model_type‘], integrand_rssi_model[‘frequency_first_value‘], #             integrand_rssi_model[‘frequency_first_count‘], integrand_rssi_model[‘frequency_first_index‘], #             integrand_rssi_model[‘frequency_second_value‘], integrand_rssi_model[‘frequency_second_count‘], #             integrand_rssi_model[‘frequency_second_index‘], integrand_rssi_model[‘frequency_first_second_middle_value‘], #             integrand_rssi_model[‘frequency_first_second_middle_count‘], integrand_rssi_model[
#                 ‘frequency_first_second_middle_index‘]
#
#         res_single, res_double = report_dic[direction_][type_][‘simple_dic‘][‘res_single‘], #                                  report_dic[direction_][type_][‘simple_dic‘][‘res_double‘]
#
#         ll = direction_, type_, res_single, res_double, to_rssi_list_np_average, to_rssi_list_np_std, to_quartern_index_1, to_quartern_value_1, to_quartern_index_3, to_quartern_value_3, to_gauss_rssi_model_type, to_frequency_first_value, to_frequency_first_count, to_frequency_first_index, to_frequency_second_value, to_frequency_second_count, to_frequency_second_index, to_frequency_first_second_middle_value, to_frequency_first_second_middle_count, to_frequency_first_second_middle_index, integrand_rssi_list_np_average, integrand_rssi_list_np_std, integrand_quartern_index_1, integrand_quartern_value_1, integrand_quartern_index_3, integrand_quartern_value_3, integrand_gauss_rssi_model_type, integrand_frequency_first_value, integrand_frequency_first_count, integrand_frequency_first_index, integrand_frequency_second_value, integrand_frequency_second_count, integrand_frequency_second_index, integrand_frequency_first_second_middle_value, integrand_frequency_first_second_middle_count, integrand_frequency_first_second_middle_index
#         worksheet.append(ll)
# file_name = ‘自采集数据-单双峰-概率计算结果‘
# localtime_ = time.strftime("%y%m%d%H%M%S", time.localtime())
# file_name_save = ‘%s%s%s‘ % (file_name, localtime_, ‘.xlsx‘)
# wb.save(file_name_save)
#
# print(‘ok-finished‘, localtime_)

  

 

 

 

import matplotlib

matplotlib.use(‘Agg‘)
import numpy as np
from numpy import array
from matplotlib import pyplot
from scipy import integrate
import math
import time
import matplotlib.mlab as mlab

zhfont1 = matplotlib.font_manager.FontProperties(fname=‘C:\Windows\Fonts\STKAITI.TTF‘)


def draw_frequency_hist_probability_density(rssi_list, title_, xlabel=‘rssi‘, dir_=‘./savefig/‘):
    np_std = np.std(rssi_list)
    np_average = np.average(rssi_list)
    x_list = sorted(list(set(rssi_list)))
    len_ = len(rssi_list)
    loop_ = len(x_list)
    x, y1, y2 = [], [], []

    for i in range(0, loop_, 1):
        val = x_list[i]
        frequency, probability_density = rssi_list.count(val), rssi_list.count(val) / len_
        x.append(val)
        y1.append(frequency)
        y2.append(probability_density)

    fig, (ax1, ax2, ax3, ax4) = pyplot.subplots(4, 1)
    fig.set_size_inches(16, 16)

    ax1.set_ylabel(‘Frequency‘)
    localtime_ = time.strftime("%y%m%d%H%M%S", time.localtime())
    title_ = ‘%s%s‘ % (title_, localtime_)
    ax1.set_title(title_, fontproperties=zhfont1)

    ax2.set_ylabel(‘Frequency‘)

    xlabel_3 = ‘%s--std=%s,average=%s,sample_number=%s‘ % (xlabel, np_std, np_average, len(rssi_list))
    ax3.set_xlabel(xlabel_3)
    ax3.set_ylabel(‘ProbabilityDensity‘)

    ax1.plot(x, y1, ‘bo‘)
    ax2.plot(x, y1)
    ax3.plot(x, y2)

    # Tweak spacing to prevent clipping of ylabel

    sigma = np.std(rssi_list)
    mu = np.average(rssi_list)
    x = array(rssi_list)
    # num_bins = 100
    # n, bins, patches = ax4.hist(x, num_bins, normed=1)
    num_bins = len(x_list)
    n, bins, patches = ax4.hist(x, num_bins, normed=1)
    # n, bins, patches = ax4.hist(x, normed=1)
    # add a ‘best fit‘ line
    y = mlab.normpdf(bins, mu, sigma)
    ax4.plot(bins, y, ‘--‘)
    xlabel_4 = ‘%s--std=%s,average=%s‘ % (‘normpdf‘, np_std, np_average)
    ax4.set_xlabel(xlabel_4)
    ylabel_4 = ‘normpdf‘
    ax4.set_ylabel(ylabel_4)
    # str_= ‘%s: $\mu=$s, $\sigma=$s$‘ % (‘te‘)
    # ax4.set_title(str_)
    ax4.plot(bins, y)

    fig.tight_layout()
    # pyplot.plot()
    dir_ = ‘%s%s‘ % (dir_, title_)
    pyplot.show()
    pyplot.savefig(dir_)
    pyplot.close()

  

 

【基于rssi室内定位报告】rssi分布情况标识位置

标签:frequency   技术分享   sqrt   label   sqlite3   class   res   def   max   

原文地址:http://www.cnblogs.com/yuanjiangw/p/7442268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!