根据我在Link之前的问题,仍然存在未解决的问题。
数组结果是多余的。我只需要单个数据
atm结果如下
我需要删除重复的数据,因此每个显示的人只有1个,并将其存储到数组中。 所以我可以使用数组,当我打电话时,数组会给我像
array(
0.94197664983117,
0.94197664983117,
0.96085998187867,
0.96055551656181,
0.94850004357715,
0.95310290634961,
0.95625985627734
);
我使用此代码
for($x=0;$x<1;$x++){
$nth = $x;
$entz = array();
for ($i=0;$i<count($kriteria);$i++)
{
for ($j=0;$j<count($alternatif);$j++)
{
${"entz$nth"}[$i] = (((-1)/log(7)) *(
($probabilitas[0][$nth]*log($probabilitas[0][$nth]))+
($probabilitas[1][$nth]*log($probabilitas[1][$nth]))+
($probabilitas[2][$nth]*log($probabilitas[2][$nth]))+
($probabilitas[3][$nth]*log($probabilitas[3][$nth]))+
($probabilitas[4][$nth]*log($probabilitas[4][$nth]))+
($probabilitas[5][$nth]*log($probabilitas[5][$nth]))+
($probabilitas[6][$nth]*log($probabilitas[6][$nth]))
));
}
}
}
showb(${"entz$nth"});
编辑
如何获得结果?我正在使用这样的公式
c1 =(-1 / log(7))* ((0,217391304 * log(0,217391304))+(0,086956522 * log(0,086956522))+(0,043478261 * log(0,043478261))+(0,086956522 * log(0,086956522 ))+(0,217391304 * log(0,217391304))+(0,173913043 * log(0,173913043))+(0,173913043 * log(0,173913043)))
c2 =(-1 / log(7))* (((0,043478261 * log(0,043478261))+(0,173913043 * log(0,173913043))+(0,173913043 * log(0,173913043))+(0,173913043 * log(0,173913043) ))+(0,173913043 * log(0,173913043))+(0,173913043 * log(0,173913043))+(0,086956522 * log(0,086956522)))
c3 =(-1 / log(7))* (((0,238095238 * log(0,238095238))+(0,095238095 * log(0,095238095))+(0,095238095 * log(0,095238095))+(0,19047619 * log(0,19047619) ))+(0,19047619 * log(0,19047619))+(0,095238095 * log(0,095238095))+(0,095238095 * log(0,095238095)))
c4 =(-1 / log(7))* (((0,071428571 * log(0,071428571))+(0,178571429 * log(0,178571429))+(0,178571429 * log(0,178571429))+(0,178571429 * log(0,178571429) ))+(0,035714286 * log(0,035714286))+(0,178571429 * log(0,178571429))+(0,178571429 * log(0,178571429)))
c5 =(-1 / log(7))* (((0,058823529 * log(0,058823529))+(0,235294118 * log(0,235294118))+(0,117647059 * log(0,117647059))+(0,235294118 * log(0,235294118) ))+(0,117647059 * log(0,117647059))+(0,117647059 * log(0,117647059))+(0,117647059 * log(0,117647059)))
c6 =(-1 / log(7))* (((0,208333333 * log(0,208333333))+(0,166666667 * log(0,166666667))+(0,166666667 * log(0,166666667))+(0,083333333 * log(0,083333333) ))+(0,166666667 * log(0,166666667))+(0,166666667 * log(0,166666667))+(0,041666667 * log(0,041666667)))
对于静态代码,我可以使用此代码
$nEntropy = array();
for ($i=0;$i<count($kriteria);$i++)
{
for ($j=0;$j<count($alternatif);$j++)
{
$nEntropy[$i] = (((-1)/log(7)) *(
($probabilitas[0][0]*log($probabilitas[0][0]))+
($probabilitas[1][0]*log($probabilitas[1][0]))+
($probabilitas[2][0]*log($probabilitas[2][0]))+
($probabilitas[3][0]*log($probabilitas[3][0]))+
($probabilitas[4][0]*log($probabilitas[4][0]))+
($probabilitas[5][0]*log($probabilitas[5][0]))+
($probabilitas[6][0]*log($probabilitas[6][0]))
));
}
}
$nEntropy1 = array();
for ($i=0;$i<count($kriteria);$i++)
{
for ($j=0;$j<count($alternatif);$j++)
{
$nEntropy1[$i] = (((-1)/log(7)) *(
($probabilitas[0][1]*log($probabilitas[0][1]))+
($probabilitas[1][1]*log($probabilitas[1][1]))+
($probabilitas[2][1]*log($probabilitas[2][1]))+
($probabilitas[3][1]*log($probabilitas[3][1]))+
($probabilitas[4][1]*log($probabilitas[4][1]))+
($probabilitas[5][1]*log($probabilitas[5][1]))+
($probabilitas[6][1]*log($probabilitas[6][1]))
));
}
}
$nEntropy2 = array();
for ($i=0;$i<count($kriteria);$i++)
{
for ($j=0;$j<count($alternatif);$j++)
{
$nEntropy2[$i] = (((-1)/log(7)) *(
($probabilitas[0][2]*log($probabilitas[0][2]))+
($probabilitas[1][2]*log($probabilitas[1][2]))+
($probabilitas[2][2]*log($probabilitas[2][2]))+
($probabilitas[3][2]*log($probabilitas[3][2]))+
($probabilitas[4][2]*log($probabilitas[4][2]))+
($probabilitas[5][2]*log($probabilitas[5][2]))+
($probabilitas[6][2]*log($probabilitas[6][2]))
));
}
}
$nEntropy3 = array();
for ($i=0;$i<count($kriteria);$i++)
{
for ($j=0;$j<count($alternatif);$j++)
{
$nEntropy3[$i] = (((-1)/log(7)) *(
($probabilitas[0][3]*log($probabilitas[0][3]))+
($probabilitas[1][3]*log($probabilitas[1][3]))+
($probabilitas[2][3]*log($probabilitas[2][3]))+
($probabilitas[3][3]*log($probabilitas[3][3]))+
($probabilitas[4][3]*log($probabilitas[4][3]))+
($probabilitas[5][3]*log($probabilitas[5][3]))+
($probabilitas[6][3]*log($probabilitas[6][3]))
));
}
}
$nEntropyy4 = array();
for ($i=0;$i<count($kriteria);$i++)
{
for ($j=0;$j<count($alternatif);$j++)
{
$nEntropy4[$i] = (((-1)/log(7)) *(
($probabilitas[0][4]*log($probabilitas[0][4]))+
($probabilitas[1][4]*log($probabilitas[1][4]))+
($probabilitas[2][4]*log($probabilitas[2][4]))+
($probabilitas[3][4]*log($probabilitas[3][4]))+
($probabilitas[4][4]*log($probabilitas[4][4]))+
($probabilitas[5][4]*log($probabilitas[5][4]))+
($probabilitas[6][4]*log($probabilitas[6][4]))
));
}
}
$nEntropy5 = array();
for ($i=0;$i<count($kriteria);$i++)
{
for ($j=0;$j<count($alternatif);$j++)
{
$nEntropy5[$i] = (((-1)/log(7)) *(
($probabilitas[0][5]*log($probabilitas[0][5]))+
($probabilitas[1][5]*log($probabilitas[1][5]))+
($probabilitas[2][5]*log($probabilitas[2][5]))+
($probabilitas[3][5]*log($probabilitas[3][5]))+
($probabilitas[4][5]*log($probabilitas[4][5]))+
($probabilitas[5][5]*log($probabilitas[5][5]))+
($probabilitas[6][5]*log($probabilitas[6][5]))
));
}
}
showb($nEntropy);
showb($nEntropy1);
showb($nEntropy2);
showb($nEntropy3);
showb($nEntropy4);
showb($nEntropy5);
如果我使用代码,则必须重复使用它。如果$条件和$ Alternative的数目未知,这将非常麻烦。因此,我想动态地制作它。因此,我不需要随时重写代码。我的代码的结果也变得多余。我只想显示一次
答案 0 :(得分:1)
使用此代码,这是您要执行的操作吗?
$probabilitas =
array (
array (
0.21739130434783,
0.043478260869565,
0.23809523809524,
0.071428571428571,
0.058823529411765,
0.20833333333333
),
array (
0.08695652173913,
0.17391304347826,
0.095238095238095,
0.17857142857143,
0.23529411764706,
0.16666666666667
),
array (
0.043478260869565,
0.17391304347826,
0.095238095238095,
0.17857142857143,
0.11764705882353,
0.16666666666667
),
array (
0.08695652173913,
0.17391304347826,
0.19047619047619,
0.17857142857143,
0.23529411764706,
0.083333333333333
),
array (
0.21739130434783,
0.17391304347826,
0.19047619047619,
0.035714285714286,
0.11764705882353,
0.16666666666667
),
array (
0.17391304347826,
0.17391304347826,
0.095238095238095,
0.17857142857143,
0.11764705882353,
0.16666666666667
),
array (
0.17391304347826,
0.08695652173913,
0.095238095238095,
0.17857142857143,
0.11764705882353,
0.041666666666667
)
);
// UPDATE
// 7 alternatif arrays, each with 6 element
$alternatif_count = count($probabilitas[0]);
// We choose eg. every first element of every alternatif array, and push them onto a column array
for($j=0; $j<$alternatif_count; $j++){
$col_arr[] = array_column($probabilitas, $j);
}
// Then for each column we calculate entropy
$entropy_arr = array();
foreach($col_arr as $col){
$calc = 0;
foreach($col as $prob){
$calc += $prob * log($prob);
$entropy = ((-1)/log(7)) * $calc;
}
array_push($entropy_arr, $entropy);
}
//showb($entropy_arr);
更新
请对此进行测试,并验证计算方法是否正确。
答案 1 :(得分:0)
基于@VörösAmadea的回答,我只是尝试添加一些内容,也许可以使用。但是我还没有尝试过代码。
$alternatif_count = count($probabilitas[0]);
for($j=0; $j<$alternatif_count; $j++){
$col_arr[] = array_column($probabilitas, $j);
}
$entropys = array();
$no=-1;
foreach($col_arr as $col){
$no++;
$calc = 0;
foreach($col as $prob){
$calc += $prob * log($prob);
$entropy = ((-1)/log(7)) * $calc;
}
$entropys[$no] = $entropy;
}
showb($entropys);