📄 isa.cpp
字号:
39.647434, 38.760994, 38.941170, 39.140553, 39.869812, 40.827415,
56.098412, 57.265591, 58.451645, 59.673508, 60.253437, 60.985992,
32.541389, 32.175434, 32.452503, 36.557224, 59.276855, 65.867867,
42.135281, 44.113327, 59.374249, 67.391022, 70.063057, 71.771996,
25.582716, 26.132494, 28.221998, 30.686630, 32.147362, 33.002293,
69.055222, 70.507874, 71.499229, 72.746384, 73.410744, 73.887932,
48.718025, 47.532242, 46.045387, 44.645142, 41.717686, 37.887100,
62.168484, 61.233868, 59.110775, 57.336044, 52.981091, 47.703876,
56.996231, 48.142223, 37.049068, 32.069519, 31.478189, 30.912769,
75.381119, 75.472733, 75.197456, 74.903839, 74.998299, 75.095528,
39.208248, 46.830154, 51.553436, 54.306450, 55.349491, 56.114876,
51.943317, 52.292503, 64.056519, 69.353638, 70.283295, 71.072830,
40.505486, 35.231083, 34.181683, 33.710152, 33.432659, 33.069767,
62.944603, 64.108253, 65.130707, 66.179268, 66.241180, 66.292885,
39.065357, 38.096779, 37.796223, 37.545856, 39.356842, 62.125229,
56.129730, 54.230358, 51.984962, 50.042957, 48.829712, 48.202518,
28.737541, 30.962187, 35.874020, 41.234127, 45.102612, 48.694073,
59.603745, 56.080017, 54.274258, 54.430183, 57.234001, 61.689487,
27.100470, 27.391628, 28.860472, 29.586695, 32.214294, 49.646168,
42.578938, 42.707523, 46.499107, 61.546795, 66.302330, 69.435471,
24.704388, 23.817375, 24.046761, 24.339071, 25.794577, 27.424465,
73.321091, 72.934540, 71.652267, 70.359489, 68.717056, 66.875145,
60.156940, 58.365196, 55.221836, 51.438900, 43.486507, 35.680210,
69.888580, 68.089386, 64.125175, 58.458385, 49.244770, 42.040192,
49.545406, 47.609200, 44.852962, 41.111610, 36.726032, 33.787960,
67.857460, 66.812584, 64.708801, 62.422665, 59.438080, 56.051315,
29.205547, 30.241322, 51.359497, 57.714642, 59.813580, 62.286613,
39.172031, 62.784195, 72.729218, 74.899582, 75.101471, 74.625610,
39.345543, 30.734879, 28.198812, 27.673058, 28.262657, 29.271502,
64.181732, 64.110657, 64.177513, 64.198502, 62.862377, 61.353882,
49.247684, 45.982567, 42.984966, 41.864433, 45.736561, 53.809952,
45.845943, 49.866535, 53.184002, 55.621735, 56.126793, 56.720921,
47.669838, 43.757298, 37.441799, 31.201229, 31.328125, 42.522282,
56.797291, 56.647835, 56.147968, 56.182575, 61.241802, 68.324799,
25.885382, 25.266989, 26.266413, 29.911463, 48.237133, 55.800972,
33.267662, 35.935478, 58.117008, 64.829880, 65.837509, 66.013435,
31.411585, 29.968023, 28.945412, 27.730225, 25.888927, 24.555252,
65.282539, 66.253296, 67.015106, 67.718575, 68.268463, 68.910324,
58.181709, 52.531116, 45.059658, 41.518814, 43.613926, 48.723129,
66.725960, 61.398178, 54.397526, 49.747463, 49.198914, 51.182693,
45.813328, 39.484116, 37.132645, 36.125355, 35.372692, 34.431362,
68.615326, 63.672047, 56.815689, 52.325283, 55.817215, 62.483337,
31.296478, 42.914101, 48.889244, 51.949879, 54.820854, 57.157787,
52.505817, 52.505344, 56.267231, 60.721333, 62.469940, 64.262184,
33.435272, 32.282433, 32.086212, 32.000500, 32.671661, 33.762459,
58.656891, 58.056892, 58.819580, 68.911041, 73.448387, 75.363182,
35.614555, 35.200199, 36.968960, 40.057529, 45.163555, 49.660789,
53.838459, 51.832664, 49.989349, 48.216988, 45.626396, 43.095383,
34.457195, 33.950645, 34.269539, 34.803413, 36.763100, 39.758183,
56.372822, 55.345272, 54.272526, 53.359196, 52.152298, 51.039448,
27.531933, 27.006523, 28.622620, 31.198097, 36.599487, 40.651020,
42.414234, 42.185001, 42.217133, 43.486980, 51.835091, 60.074238,
23.639551, 22.836199, 22.911375, 22.986547, 23.293180, 23.700720,
67.668297, 68.366440, 69.131081, 69.877518, 70.247528, 70.614265,
60.928158, 57.548393, 48.826794, 41.315224, 39.400116, 39.224403,
66.256111, 65.317680, 63.021000, 61.009293, 56.424549, 47.857880,
55.855270, 52.779793, 47.605247, 39.880711, 33.758202, 32.264690,
69.794441, 69.010628, 67.119583, 65.149765, 61.983784, 58.478523,
29.877203, 29.768606, 32.459286, 49.566021, 58.325737, 61.957420,
56.146107, 58.606976, 66.362129, 70.163307, 71.471375, 72.648071,
44.872620, 36.178070, 29.009380, 27.268270, 26.935045, 26.783087,
61.207169, 61.823627, 62.612675, 63.350975, 63.823631, 64.269852,
38.927948, 41.114468, 43.522717, 46.293316, 47.920307, 49.854725,
51.320835, 50.337139, 49.164543, 47.947269, 49.591595, 61.330631,
36.227554, 37.267441, 39.079945, 39.881092, 37.040070, 35.030758,
51.085484, 53.877502, 55.835861, 57.359768, 57.680626, 58.208893,
26.894844, 26.080000, 29.663668, 38.701942, 53.231190, 58.369675,
34.521591, 52.842365, 61.714451, 64.067131, 64.757278, 65.810097,
27.026386, 26.530333, 26.430269, 26.352198, 26.184418, 26.114687,
63.972549, 67.855560, 69.891846, 71.764351, 72.309532, 72.795731,
45.149158, 43.770172, 41.837166, 40.267738, 39.735607, 39.100258,
58.875278, 57.556004, 55.501099, 53.622044, 50.823872, 47.078526,
50.485939, 46.381718, 37.689960, 29.847857, 26.422848, 24.876884,
59.789768, 59.567284, 59.284214, 58.984970, 58.017864, 57.095562,
41.429810, 43.976082, 47.014053, 50.399490, 51.843700, 53.452488,
46.782955, 50.502892, 58.655106, 63.725922, 66.094688, 68.184631,
34.162880, 34.046783, 33.842915, 32.995327, 30.022175, 27.718697,
58.956757, 59.689411, 60.697815, 61.749481, 62.277203, 62.836922,
33.734638, 32.014286, 31.167442, 32.631802, 47.028961, 55.942871,
50.632099, 50.057766, 49.455719, 49.014084, 48.395786, 47.998089,
25.272448, 26.346659, 31.433893, 38.279419, 42.759121, 46.711502,
53.823658, 53.234577, 53.260067, 53.412479, 54.081684, 55.209126,
33.613049, 28.633829, 26.062918, 25.187447, 29.228275, 36.986927,
41.628700, 40.390381, 43.459518, 55.166557, 60.108841, 63.855824,
21.089224, 20.484560, 21.044039, 21.634182, 23.506865, 25.772820,
69.176346, 68.281868, 66.741623, 65.438507, 65.970253, 67.161461,
53.369781, 51.400700, 49.685795, 47.246235, 39.354465, 31.853041,
63.349293, 61.664047, 58.807240, 56.812656, 50.404041, 39.729244,
46.901203, 45.349098, 42.557941, 38.913258, 31.835720, 27.674559,
63.720535, 61.964352, 59.462391, 56.895462, 55.355854, 53.863182,
27.095095, 29.660772, 39.817093, 47.601803, 50.428905, 53.411743,
44.516670, 58.388889, 63.524197, 65.088860, 65.063484, 64.800697,
37.319935, 32.015865, 26.518044, 23.407333, 23.094036, 23.260792,
62.548115, 61.875668, 60.814911, 59.769176, 59.030266, 58.411160,
37.372692, 40.863232, 49.482800, 49.162582, 39.811832, 33.341942,
47.544708, 49.888531, 51.188622, 52.176895, 51.651566, 50.969135,
42.586380, 35.758331, 29.665880, 28.991011, 33.644016, 41.250126,
50.662853, 49.017979, 48.954079, 58.715080, 64.308548, 67.379364,
23.760584, 22.277967, 24.963284, 29.635550, 38.716541, 46.741943,
30.098206, 41.980347, 50.195648, 56.569061, 62.559212, 66.328613,
30.172644, 26.123903, 23.810966, 22.418844, 22.009727, 21.664106,
55.856991, 62.119560, 64.850906, 66.431183, 66.411301, 66.506851,
55.577873, 50.762405, 42.120644, 36.307308, 35.805870, 37.050991,
58.845463, 56.243477, 52.602287, 49.052742, 46.056770, 43.221336,
39.033607, 38.469395, 35.733345, 31.836475, 28.972008, 27.141273,
57.992729, 57.536976, 56.729862, 56.033676, 54.768150, 53.441296,
32.115356, 35.834496, 40.038891, 44.358440, 48.191753, 51.852276,
44.013981, 45.895420, 53.048813, 58.737057, 61.497623, 63.636013,
30.219889, 29.975567, 30.211178, 30.532249, 29.221239, 28.272736,
56.795086, 57.935947, 60.266613, 62.981785, 64.338074, 65.651001,
33.334896, 34.389030, 36.672932, 39.512783, 40.964054, 42.605682,
47.600346, 46.239918, 44.668194, 43.102600, 43.089481, 44.357540,
28.433762, 29.019360, 33.668175, 36.238064, 33.396027, 32.823231,
52.387657, 53.135071, 53.822685, 54.147705, 52.199329, 49.779823,
22.128824, 21.720842, 23.155708, 25.419979, 31.055321, 40.258072,
38.499886, 36.868240, 39.613865, 47.629208, 52.772152, 56.228870,
21.348761, 20.357340, 20.329277, 20.301203, 20.558020, 20.974857
};
//
//随机数产生器
//
int random()
{
int r;
r = (int)(rand()*1.0/32767*CB_SIZE);
return r;
}
//
//失真函数计算程序
//
float distortion(float cb[CB_SIZE][CB_ORDER], float cb_percent[CB_SIZE])
{
//
//定义变量
//
float D_cb; //失真变量
float D1; //失真变量
int C_bit[CB_BIT]; //二进制码序号
int C_bit_error_1bit[CB_BIT]; //二进制码序号错1bit
int C_index; //码序号
int C_index_error_1bit; //错1bit的码序号
int i;
int j;
int k;
//
//变量初始化
//
D_cb = 0;
//计算失真
for(i = 0; i < CB_SIZE; i++)
{
//将10进制码序号转变成2进制码序号
C_index = i;
for(j = 0; j < CB_BIT; j++)
{
C_bit[CB_BIT-1-j] = C_index>>(CB_BIT-1-j);
C_index = C_index - (C_bit[CB_BIT-1-j]<<(CB_BIT-1-j));
}
//查找与当前码序号1比特误码的码序号
for(j = 0; j < CB_BIT; j++)
{
//1比特误码
for(k = 0; k < CB_BIT; k++)
{
C_bit_error_1bit[k] = C_bit[k];
}
if(1 == C_bit_error_1bit[j])
{
C_bit_error_1bit[j] = 0;
}
else
{
C_bit_error_1bit[j] = 1;
}
//计算错1bit的10进制码序号
C_index_error_1bit = 0;
for(k = 0; k < CB_BIT; k++)
{
C_index_error_1bit += (C_bit_error_1bit[k]<<k);
}
//计算1比特误码的码序号与原码序列的失真
D1 = 0;
for(k = 0; k < CB_ORDER; k++)
{
D1 += (cb[i][k] - cb[C_index_error_1bit][k])*
(cb[i][k] - cb[C_index_error_1bit][k]);
}
}
//将当前码矢量的失真乘以当前码矢量的先验概率
D_cb += cb_percent[i]*D1;
}
//返回总失真
return D_cb;
}
//
//计算初始的t值
//
float inti_t(float* codebook_SA,float p,int m)
{
int m1=0; //目标函数减少变换数
int m2=0; //目标函数增大变换数
float f=0; //目标函数增大变换的平均增量
float t0; //初始温度值
int rand1;
int rand2;
float CB_temp[CB_ORDER];
float CB_percent_temp;
float D_cb1; //当前最小的失真量
float D_cb2; //扰动后的失真量
int i;
int j;
int k; //flag
//计算当前码序列的失真量
D_cb1 = distortion(codebook, CB_percent);
//产生一个m个尝试的序列
for(i = 0; i < m; i++)
{
//随机产生两个交换的序号
rand1 = random();
rand2 = random();
//交换序号所对应的矢量
for(j = 0; j < CB_ORDER; j++)
{
CB_temp[j] = codebook[rand1][j];
codebook[rand1][j] = codebook[rand2][j];
codebook[rand2][j] = CB_temp[j];
}
//交换序号所对应矢量先验概率
CB_percent_temp = CB_percent[rand1];
CB_percent[rand1] = CB_percent[rand2];
CB_percent[rand2] = CB_percent_temp;
//计算新的失真量
D_cb2 = distortion(codebook, CB_percent);
//判断D_cb1与D_cb2的大小并根据此对m1,m2,f进行操作
if(D_cb1 > D_cb2)
{
m1=m1+1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -