Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ขอความช่วยเหลือเกี่ยวกับ Function standard deviation หน่อยค่ะ



 

ขอความช่วยเหลือเกี่ยวกับ Function standard deviation หน่อยค่ะ

 



Topic : 098445



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์




ถ้าเราจะดึงจากฐานข้อมูลตามเงื่อนไข โดยยกตัวอย่างมา 3 เรคอร์ด จากค่าตัวเลขด้านล่าง

เราลองเขียนคำสั่ง foreach ($a as $i) แต่ติดปัญหากับ function standard_deviation ตัวนี้ค่ะ

เราอยากให้คำสั่งมันทำงานจากที่เราได้ดึงข้อมูลจากฐานข้อมูลมาค่ะ

$std_array[] = array(0.64,1.66,2.43,1.24,1.56);
$std_array[] = array(1.56,1.21,1.09,1.70,2.22);
$std_array[] = array(2.39,1.78,2.50,1.89,1.40);

EX. ตัวอย่าง
Code (PHP)
  function standard_deviation($aValues, $bSample = false)
{
    $fMean = array_sum($aValues) / count($aValues);
    $fVariance = 0.0;
    foreach ($aValues as $i)
    {
        $fVariance += pow($i - $fMean, 2);
    }
    $fVariance /= ( $bSample ? count($aValues) - 1 : count($aValues) );
    return (float) sqrt($fVariance);
}

$std_array = array(0.64,1.66,2.43,1.24,1.56,1.21,1.09,1.70,2.22,2.39,1.78,2.50,1.89,1.40);

$STD = standard_deviation($std_array);
echo number_format($STD , 2);	


อ้างอิง : http://php.net/manual/en/function.stats-standard-deviation.php



Tag : PHP, MySQL, HTML/CSS, JavaScript, jQuery, CakePHP









ประวัติการแก้ไข
2013-07-30 10:19:02
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-07-30 10:16:39 By : phoenix10 View : 2949 Reply : 24
 

 

No. 1



โพสกระทู้ ( 140 )
บทความ ( 0 )



สถานะออฟไลน์


แอบงงคำถามนะครับ

คือคุณไม่สามารถ เรียกฟังก์ชั่น standard_deviation หลังจากการ query ข้อมูลหรือยังไงครับ

จะให้ดีรบกวน แปะโค้ดเต็มๆที่เขียนลงมาเลยครับจะได้ช่วยดูว่า Logic Error ตรงไหน






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 10:56:56 By : zinlucifer
 


 

No. 2



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์


เราลองทำตามโค๊ดตัวนี้ดู แต่ทำไม่ได้จิงๆค่ะ

มันเป็นการหาค่า STD เหมือนกัน ช่วยหน่อยนะค่ะ

Code (PHP)
<?php
//-- ส่วนที่ดึงจากฐานข้อมูล
        $sample[0] = (float) $_GET['x0']; 
        $sample[1] = (float) $_GET['x1'];
        $sample[2] = (float) $_GET['x2'];
        $sample[3] = (float) $_GET['x3'];
        $sample[4] = (float) $_GET['x4'];

$array_count = 0;
$array_total = 0;
$mean = 0;
$array_count_minus_one = $array_count - 1;

$random_array = array();
$newarray = array();
$array_total_newarray = 0;
$mean_minus_one = $mean - 1;

$array_count = count($sample);
$array_total =  array_sum($sample);

//**mean**//
$mean = (($array_total/$array_count) / $array_count);
//
foreach ($sample as $samples)
{
$random_array[] = $samples - $mean;
}
foreach ($random_array as $random_arrays)
{
$newarray[] = pow($random_arrays, 2);
}
$array_total_newarray += array_sum($newarray);

$array_total_newarray = $array_total_newarray / $mean_minus_one;
$answer = sqrt($array_total_newarray);

echo "<p>{$answer}</p>";
echo "<p>{$array_total}</p>";
echo "<p>{$array_count}</p>";
?>


อ้างอิง : http://forums.phpfreaks.com/topic/224201-php-standard-deviation/


ประวัติการแก้ไข
2013-07-30 11:12:16
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 11:11:10 By : phoenix10
 

 

No. 3



โพสกระทู้ ( 1,994 )
บทความ ( 10 )



สถานะออฟไลน์
Facebook Blogger

$sample[0] - $sample[4] มีค่าเป็นอะไรบ้าง?

ผลลัพธ์(จากการ กดเครื่องคิดเลขตามสูตร) ควรเป็นอย่างไร?

ขอข้อมูลสำหรับตรวจคำตอบหน่อยครับ เผื่อจะช่วยคิดได้บ้าง



------------------------------ #1
สูตร Excel เห็นเขาใช้แบบนี้ด้วยนะครับ
SQRT(((25*B5)+(16*C5)+(9*D5)+(4*E5)+(1*F5))/G5-(H5^2))

http://www.ksv.ac.th/tb/cai/excelExam/Pack5.htm


ประวัติการแก้ไข
2013-07-30 11:41:45
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 11:37:58 By : {Cyberman}
 


 

No. 4



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากค่ะ คุณ กระบี่อยู่ที่ใจ และคุณ zinlucifer

เราต้องการนำค่าด้านล่างไปคิด ส่วนที่ดึงจากฐานข้อมูล

//สมมุติ : ส่วนที่ดึงจากฐานข้อมูล เป็นเรคอร์ด
$std_array[] = array(0.64,1.66,2.43,1.24,1.56);
$std_array[] = array(1.56,1.21,1.09,1.70,2.22);
$std_array[] = array(2.39,1.78,2.50,1.89,1.40);

แล้วนำมาใส่ในส่วนของฟั่งชั่นด้านล่างตามตัวอย่าง จากตัวแปร $std_array ค่ะ

Code (PHP)
function standard_deviation($aValues, $bSample = false)
{
    $fMean = array_sum($aValues) / count($aValues);
    $fVariance = 0.0;
    foreach ($aValues as $i)
    {
        $fVariance += pow($i - $fMean, 2);
    }
    $fVariance /= ( $bSample ? count($aValues) - 1 : count($aValues) );
    return (float) sqrt($fVariance);
}

$std_array = array(......);  <---- ตรงนี้ค่ะ (0.64,1.66,2.43,1.24,1.56,1.21,1.09,1.70,2.22,2.39,1.78,2.50,1.89,1.40)

//ผลลัพธ์ คือ 0.54 STD

$STD = standard_deviation($std_array);
echo number_format($STD , 2);	



ประวัติการแก้ไข
2013-07-30 11:50:34
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 11:48:41 By : phoenix10
 


 

No. 5



โพสกระทู้ ( 140 )
บทความ ( 0 )



สถานะออฟไลน์


ฟังก์ชั่น standard_deviation

Code (PHP)
function standard_deviation($aValues, $bSample = false)
{
    $fMean = array_sum($aValues) / count($aValues);
    $fVariance = 0.0;
    foreach ($aValues as $i)
    {
        $fVariance += pow($i - $fMean, 2);
    }
    $fVariance /= ( $bSample ? count($aValues) - 1 : count($aValues) );
    return (float) sqrt($fVariance);
}


จะรับค่า $aValues ที่เป็น Array 1มิติ นะครับ

แต่ถ้าเก็บตัวแปรเป็น

$std_array[] = array(0.64,1.66,2.43,1.24,1.56);
$std_array[] = array(1.56,1.21,1.09,1.70,2.22);
$std_array[] = array(2.39,1.78,2.50,1.89,1.40);

มันจะกลายเป็น Array 2มิติ

เมื่อเรียกฟังก์ชั่น standard_deviation($std_array); จะเกิด error นะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 11:56:46 By : zinlucifer
 


 

No. 6



โพสกระทู้ ( 1,994 )
บทความ ( 10 )



สถานะออฟไลน์
Facebook Blogger

ถ้าข้อมูลอยู่ในรูปแบบนี้ ลองใช้วิธีของกระทู้นี้ครับ
หาค่า sd ใน php คือว่าผมต้องการหาค่า sd จากฐานข้อมูลโดยใช้คำสั่ง sql ว่า select STDDEV(ฟิวด์) form
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 11:58:00 By : {Cyberman}
 


 

No. 7



โพสกระทู้ ( 1,994 )
บทความ ( 10 )



สถานะออฟไลน์
Facebook Blogger

ตอบความคิดเห็นที่ : 2 เขียนโดย : phoenix10 เมื่อวันที่ 2013-07-30 11:11:10

เจอละ

ย้ายบรรทัดที่ 12. $array_count_minus_one = $array_count - 1;

ไปอยู่ก่อนบรรทัดที่ 25 ครับ


ปล. บรรทัดที่ 17 ด้วยครับ
$mean_minus_one = $mean - 1;


ประวัติการแก้ไข
2013-07-30 12:01:26
2013-07-30 12:02:26
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 12:00:36 By : {Cyberman}
 


 

No. 8



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์


คือของเราเอาหลายฟิลด์มาคิดรวมกันจึงใช้คำสั่งแบบ STDDEV(ฟิวด์) form ไม่ได้ค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 12:03:18 By : phoenix10
 


 

No. 9



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์


แบบนี้รึป่าวค่ะ คุณ กระบี่อยู่ที่ใจ

Error

Fatal error: Unsupported operand types in D:\AppServ\www\sp_strength_checking_record\Untitled-11.php on line 31

Code (PHP)
<?php require_once('includes/connect.php'); ?>
<?php
//-- ส่วนที่ดึงจากฐานข้อมูล
$strSQL  = "SELECT * from tSPTH where ID='GS' ";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
 	 while($std = mssql_fetch_array($objQuery))
	 {
	 $sample[] = array($std["a"],$std["b"],$std["c"]);
	}

$array_count = 0;
$array_total = 0;
$mean = 0;

$random_array = array();
$newarray = array();
$array_total_newarray = 0;


$array_count = count($sample);
$array_total =  array_sum($sample);

//**mean**//
$mean = (($array_total/$array_count) / $array_count);
//
$array_count_minus_one = $array_count - 1;
$mean_minus_one = $mean - 1;
foreach ($sample as $samples)
{
$random_array[] = $samples - $mean;
}
foreach ($random_array as $random_arrays)
{
$newarray[] = pow($random_arrays, 2);
}
$array_total_newarray += array_sum($newarray);

$array_total_newarray = $array_total_newarray / $mean_minus_one;
$answer = sqrt($array_total_newarray);

echo "<p>{$answer}</p>";
echo "<p>{$array_total}</p>";
echo "<p>{$array_count}</p>";
?>


จิงๆ เราอยากได้ฟังชั่นนี้ไปใช้ แต่มาติดปัญหา Array 2 มิติ จากที่ทำการดึงจากฐานข้อมูล ค่ะ
Code (PHP)
<?php require_once('includes/connect.php'); ?>
<?
  function standard_deviation($aValues, $bSample = false)
{
    $fMean = array_sum($aValues) / count($aValues);
    $fVariance = 0.0;
    foreach ($aValues as $i)
    {
        $fVariance += pow($i - $fMean, 2);
    }
    $fVariance /= ( $bSample ? count($aValues) - 1 : count($aValues) );
    return (float) sqrt($fVariance);
}
?>
<?php
//-- ส่วนที่ดึงจากฐานข้อมูล
$strSQL  = "SELECT * from tSPTH where ID='GS' ";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
 	 while($std = mssql_fetch_array($objQuery))
	 {
	 $sample[] = array($std["a"],$std["b"],$std["c"]);
	}

$std_array = array($sample); 

$STD = standard_deviation($std_array);
echo number_format($STD , 2);	



ประวัติการแก้ไข
2013-07-30 14:59:35
2013-07-30 15:00:45
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 14:47:03 By : phoenix10
 


 

No. 10



โพสกระทู้ ( 140 )
บทความ ( 0 )



สถานะออฟไลน์


ลองเก็บเป็น มิติเดียวซิครับ

Code (PHP)
$sample = array($std["a"],$std["b"],$std["c"]);

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 15:05:55 By : zinlucifer
 


 

No. 11



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 10 เขียนโดย : zinlucifer เมื่อวันที่ 2013-07-30 15:05:55
รายละเอียดของการตอบ ::
ถ้าเก็บเป็นมิติเดียวก็ไม่ได้อีกค่ะ เพราะว่ามันมีความจำเป็นต้องคำนวณหลายเรคอร์ด เลยกังวลใจว่าจะทำอย่างไงดี ค่ะ .....

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 15:57:41 By : phoenix10
 


 

No. 12



โพสกระทู้ ( 140 )
บทความ ( 0 )



สถานะออฟไลน์


ถ้างั้นเวลาเรียกฟังก์ชั่นให้ใส่ index ของมิติแรกลงไปด้วยครับ

จากตัวอย่าง Code
Code (PHP)
<?php require_once('includes/connect.php'); ?>
<?
  function standard_deviation($aValues, $bSample = false)
{
    $fMean = array_sum($aValues) / count($aValues);
    $fVariance = 0.0;
    foreach ($aValues as $i)
    {
        $fVariance += pow($i - $fMean, 2);
    }
    $fVariance /= ( $bSample ? count($aValues) - 1 : count($aValues) );
    return (float) sqrt($fVariance);
}
?>
<?php
//-- ส่วนที่ดึงจากฐานข้อมูล
$strSQL  = "SELECT * from tSPTH where ID='GS' ";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
 	 while($std = mssql_fetch_array($objQuery))
	 {
	 $sample[] = array($std["a"],$std["b"],$std["c"]);
	}

$std_array = array($sample); 

$STD = standard_deviation($std_array);
echo number_format($STD , 2);


ให้ลองแก้เป็น

Code (PHP)
$std_array = array($sample['0']); 

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 16:22:56 By : zinlucifer
 


 

No. 13



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่ได้ค่ะ Error

Fatal error: Unsupported operand types in D:\AppServ\www\sp_strength_checking_record\Untitled-11.php on line 9

ไม่เป็นไรค่ะ สงสัยต้องออกแบบใหม่แล้ว

ขอบคุณมากที่ช่วยเหลือ นะค่ะ THX


ประวัติการแก้ไข
2013-07-30 16:42:28
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 16:42:03 By : phoenix10
 


 

No. 14



โพสกระทู้ ( 1,994 )
บทความ ( 10 )



สถานะออฟไลน์
Facebook Blogger

มาตอบไม่ทัน ถอดใจไปแล้วเหรอครับ


ถ้าเรื่องอาร์เรย์ จัดรูปแบบการเก็บดังนี้ครับ

Code (PHP)
while($std = mssql_fetch_array($objQuery))
{
    $sample[] = $std["a"];
    $sample[] = $std["b"];
    $sample[] = $std["c"];
}



เพียงเท่านี้อาร์เรย์ก็อยู่ในรูปแบบที่ต้องการแล้วครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 16:48:00 By : {Cyberman}
 


 

No. 15



โพสกระทู้ ( 140 )
บทความ ( 0 )



สถานะออฟไลน์


ขออภัยครับผมอ่านโค้ดผิดไปนิด

Code (PHP)
<?php require_once('includes/connect.php'); ?>
<?
  function standard_deviation($aValues, $bSample = false)
{
    $fMean = array_sum($aValues) / count($aValues);
    $fVariance = 0.0;
    foreach ($aValues as $i)
    {
        $fVariance += pow($i - $fMean, 2);
    }
    $fVariance /= ( $bSample ? count($aValues) - 1 : count($aValues) );
    return (float) sqrt($fVariance);
}
?>
<?php
//-- ส่วนที่ดึงจากฐานข้อมูล
$strSQL  = "SELECT * from tSPTH where ID='GS' ";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
 	 while($std = mssql_fetch_array($objQuery))
	 {
	 $sample[] = array($std["a"],$std["b"],$std["c"]);
	}

$std_array = array($sample); 

$STD = standard_deviation($std_array);
echo number_format($STD , 2);


ให้แก้เป็น

Code (PHP)
$std_array = array($sample);

$STD = standard_deviation($std_array['0']['0']);

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 16:53:20 By : zinlucifer
 


 

No. 16



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 15 เขียนโดย : zinlucifer เมื่อวันที่ 2013-07-30 16:53:20
รายละเอียดของการตอบ ::

ตอนนี้ไม่ Error แล้วค่ะ แต่คิดค่าเป็น 0.00 แทน

Code (PHP)
<?php require_once('includes/connect.php'); ?>
<?
  function standard_deviation($aValues, $bSample = false)
{
    $fMean = array_sum($aValues) / count($aValues);
    $fVariance = 0.0;
    foreach ($aValues as $i)
    {
        $fVariance += pow($i - $fMean, 2);
    }
    $fVariance /= ( $bSample ? count($aValues) - 1 : count($aValues) );
    return (float) sqrt($fVariance);
}
?>
<?php
//-- ส่วนที่ดึงจากฐานข้อมูล
$strSQL  = "SELECT * from tSPTH where ID='GS' ";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
 	 while($std = mssql_fetch_array($objQuery))
	 {
		$sample[] = $std["a"]; //ฟิลด์ a
		$sample[] = $std["b"]; //ฟิลด์ b
		$sample[] = $std["c"]; //ฟิลด์ c
		$sample[] = $std["d"]; //ฟิลด์ d
	}

$std_array = array($std); 


$STD = standard_deviation($std_array);
echo number_format($STD , 2);
?>






ประวัติการแก้ไข
2013-07-30 17:01:53
2013-07-30 17:03:18
2013-07-30 17:07:35
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 16:59:13 By : phoenix10
 


 

No. 17



โพสกระทู้ ( 140 )
บทความ ( 0 )



สถานะออฟไลน์


แก้ผิดนะครับ copy โค้ดนี้ไปเลยละกัน

Code (PHP)
<?php require_once('includes/connect.php'); ?>
<?
  function standard_deviation($aValues, $bSample = false)
{
    $fMean = array_sum($aValues) / count($aValues);
    $fVariance = 0.0;
    foreach ($aValues as $i)
    {
        $fVariance += pow($i - $fMean, 2);
    }
    $fVariance /= ( $bSample ? count($aValues) - 1 : count($aValues) );
    return (float) sqrt($fVariance);
}
?>
<?php
//-- ส่วนที่ดึงจากฐานข้อมูล
$strSQL  = "SELECT * from tSPTH where ID='GS' ";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
 	 while($std = mssql_fetch_array($objQuery))
	 {
	 $sample[] = array($std["a"],$std["b"],$std["c"]);
	}

$std_array = array($sample); 

$STD = standard_deviation($std_array['0']['0']);
echo number_format($STD , 2);

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 17:10:49 By : zinlucifer
 


 

No. 18



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์


ได้แล้วค่ะ

ขอบคุณมากๆค่ะ คุณ zinlucifer และ คุณ กระบี่อยู่ที่ใจ

Like Like Like <3
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 17:13:34 By : phoenix10
 


 

No. 19



โพสกระทู้ ( 140 )
บทความ ( 0 )



สถานะออฟไลน์


ขอฝากนิดนึงครับ อยากให้ลองทบทวน logic นิดนึงว่า จำเป็นจริงๆหรือว่า

จะต้องเก็บเป็น array หลายมิติ เพราะเท่าที่ดู Array รูปแบบมันเป็น

Code (PHP)
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 0.64
                    [1] => 1.66
                    [2] => 2.43
                    [3] => 1.24
                    [4] => 1.56
                    [5] => 1.21
                    [6] => 1.09
                    [7] => 1.7
                    [8] => 2.22
                    [9] => 2.39
                    [10] => 1.78
                    [11] => 2.5
                    [12] => 1.89
                    [13] => 1.4
                )

        )

)


ซึ่งผมมองว่ามันแปลกๆนิดๆนะครับ Code ที่ใช้งานจริงๆน่าจะมีเพียงเท่านี้ก็น่าจะเพียงพอแล้วนะครับ

Code (PHP)
<?php require_once('includes/connect.php'); ?>
<?
  function standard_deviation($aValues, $bSample = false)
{
    $fMean = array_sum($aValues) / count($aValues);
    $fVariance = 0.0;
    foreach ($aValues as $i)
    {
        $fVariance += pow($i - $fMean, 2);
    }
    $fVariance /= ( $bSample ? count($aValues) - 1 : count($aValues) );
    return (float) sqrt($fVariance);
}
?>
<?php
//-- ส่วนที่ดึงจากฐานข้อมูล
$strSQL  = "SELECT * from tSPTH where ID='GS' ";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
 	 while($std = mssql_fetch_array($objQuery))
	 {
	 $std_array = array($std["a"],$std["b"],$std["c"]);
	}

$STD = standard_deviation($std_array);
echo number_format($STD , 2);

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-30 17:22:30 By : zinlucifer
 


 

No. 20



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์


ขอถามต่ออีกซักนิดค่ะ

สมมุติว่า เราไม่อยากเอาค่า 0 มีคิดด้วย จะต้องใช้ฟังชชั่นอะไรคะ

เจอปัญหา คือ ถ้านำ 0 มาคิดด้วย ผลลัพธ์จะไม่ตรงค่ะ

$a = 0.64
$b = 1.66
$c = 2.56
$d = 0

$std_array = array($std["a"],$std["b"],$std["c"],$std["d"]);
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-31 10:35:08 By : phoenix10
 


 

No. 21



โพสกระทู้ ( 140 )
บทความ ( 0 )



สถานะออฟไลน์


หมายความว่า ถ้าเจอ 0 จะให้เข้าฟังก์ชั่นแค่ 3 ค่าหรือเปล่าครับ

เช่น

$a = 0.64
$b = 1.66
$c = 2.56
$d = 0

จะให้ คำนวณแค่

$a = 0.64
$b = 1.66
$c = 2.56

ถ้าใช่ ก็ใช้เงื่อนไข if ดักไว้ใน loop while ครับ ว่าเมื่อค่าที่queryออกมา = 0

ก็ไม่ต้องเก็บเข้า array
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-31 10:41:21 By : zinlucifer
 


 

No. 22



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 21 เขียนโดย : zinlucifer เมื่อวันที่ 2013-07-31 10:41:21
รายละเอียดของการตอบ ::

ใช่ค่ะ
$a = 0.64
$b = 1.66
$c = 2.56
$d = 0

จะให้ คำนวณแค่

$a = 0.64
$b = 1.66
$c = 2.56

แบบนี้ใช่รึป่าวค่ะ แต่สงสัย (ก็ไม่ต้องเก็บเข้า array) มันต้องตัดส่วนไหนออกบ้างค่ะ

Error : Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 35 bytes) in

Code (PHP)
<?php require_once('includes/connect.php'); ?>
<?
  function standard_deviation($aValues, $bSample = false)
{
    $fMean = array_sum($aValues) / count($aValues);
    $fVariance = 0.0;
    foreach ($aValues as $i)
    {
        $fVariance += pow($i - $fMean, 2);
    }
    $fVariance /= ( $bSample ? count($aValues) - 1 : count($aValues) );
    return (float) sqrt($fVariance);
}
?>
<?php
//-- ส่วนที่ดึงจากฐานข้อมูล
$strSQL  = "SELECT * from tSPTH where ID='GS' ";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
 	 while($std = mssql_fetch_array($objQuery))
	 {
$a=0;
$num=1;
while($a < $std)
{ 
	 $std_array = array($std["a"],$std["b"],$std["c"]);

$num=$num+1;
$a++;
	}
}

$STD = standard_deviation($std_array);
echo number_format($STD , 2);



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-31 11:08:25 By : phoenix10
 


 

No. 23



โพสกระทู้ ( 140 )
บทความ ( 0 )



สถานะออฟไลน์


ณ ตอนนี้ปัจจุบันใช้ Array กี่มิติอยู่ครับ

ถ้าใช้มิติเดียว (โค้ดความเห็นที่ 19) แต่ผมเปลี่ยนวิธีการนิดหน่อยนะครับ

โดยผมจะให้ query เหมือนเดิม แต่เมื่อได้ Array ออกมาแล้วจะ Filter มันแทน

Code (PHP)
<?php require_once('includes/connect.php'); ?>
<?
  function standard_deviation($aValues, $bSample = false)
{
    $fMean = array_sum($aValues) / count($aValues);
    $fVariance = 0.0;
    foreach ($aValues as $i)
    {
        $fVariance += pow($i - $fMean, 2);
    }
    $fVariance /= ( $bSample ? count($aValues) - 1 : count($aValues) );
    return (float) sqrt($fVariance);
}
?>
<?php
//-- ส่วนที่ดึงจากฐานข้อมูล
$strSQL  = "SELECT * from tSPTH where ID='GS' ";
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");
 	 while($std = mssql_fetch_array($objQuery))
	 {
	 $std_array = array($std["a"],$std["b"],$std["c"]);
	}

function check($var){
    if($var != 0){
        return $var;
    }
}

$std_array = array_filter($std_array, "check"); //นำค่าใน array ไปตรวจสอบใน function check

$STD = standard_deviation($std_array);
echo number_format($STD , 2);

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-31 12:17:50 By : zinlucifer
 


 

No. 24



โพสกระทู้ ( 41 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่ได้ค่ะ Error

ไม่เป็นไรค่ะ ขอบคุณมากค่ะ คุณ zinlucifer เราพอจะเข้าใจบ้างแล้วค่ะ


ประวัติการแก้ไข
2013-07-31 13:20:20
2013-07-31 13:32:23
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-07-31 13:18:43 By : phoenix10
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอความช่วยเหลือเกี่ยวกับ Function standard deviation หน่อยค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่