¤È¤¢¤ë½¸ÃÄ¤Î¥×¥í¥°¥é¥à¥á¥â


¤Þ¤È¤Þ¤Ã¤¿¤é¡¤¤µ¤é¤ËÀ°Íý¤¹¤ëͽÄê


»ÈÍѾå¤ÎÃí°Õ

µ¤¤Å¤¤¤¿¤³¤È¡¤¤É¤ó¤É¤ó½ñ¤­¹þ¤ó¤Ç¤ß¤è¤¦
¡¡
¥×¥í¥°¥é¥àÎã¤Ç using ¤Ê¤É¤ò»È¤Ã¤Æ¾Êά¤·¤Æ¤¤¤ë¤È¤³¤í¤¬¤¢¤ê¤Þ¤¹¤¬¡¤Á´¤Æ½ñ¤¯¤Î¤¬ÌÌÅݤ«¤Ä¸«¤Å¤é¤¯¤Ê¤ë¤Î¤Ç¤¢¤¨¤Æ»È¤Ã¤Æ¤¤¤Þ¤¹¡¥¼ÂºÝ¤Ë»È¤¦ºÝ¤Ï using ¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Ï»È¤ï¤Ê¤¤Êý¤¬µÈ¤Ç¤¹¡¥

ublas::¥á¥â


ÀÑ¡¡ublas::prod
ÆâÀÑ¡¡ublas::inner_prod
ľÀÑ¡¡ublas::outer_prod
³°ÀÑ¡¡Â¸ºß¤·¤Ê¤¤

»È¤¨¤ë¹ÔÎó

·¿Ì¾ÀâÌÀ#include
matrixÉáÄ̤ιÔÎó
zero_matrixÎí¹ÔÎó
identity_matrixñ°Ì¹ÔÎó
symmetric_matrixÂоιÔÎó
banded_matrixÂÓ¹ÔÎó
diagonal_matrixÂгѹÔÎó(ÂÓ¹ÔÎó¤Î°ìÉô¤È¤·¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë. upper = 0, lower = 0)boost/numeric/ublas/banded.hpp
sparse_matrixÁ¹ÔÎó(wiki)()

´Êñ¤Ê»È¤¤Êý( ½é´ü²½ÊÔ )
 namespace ublas = boost::numeric::ublas;

 ublas::matrix<double> m0(3,3);
 ublas::matrix<double> m1( 3,3,0);                                         //3*3¹ÔÎó ¤Ç 0¤ÇËä¤Þ¤Ã¤Æ¤¤¤ë
 ublas::matrix<double> m2( ublas::identity_matrix<double>(3,3));  //ñ°Ì¹ÔÎó¤Ç½é´ü²½
¾¤Ë¤âÀë¸À¤Î»ÅÊý¤¬¤¢¤ê¤½¤¦ -> Í׸¦µæ

ublas/matrix_proxy.hpp

Éôʬ¹ÔÎó¤ò¼è¤Ã¤Æ¤¯¤ë¤È¤­¤Ë»È¤¨¤ë¡£

°Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï¤¦¤í³Ð¤¨¡¢¥Ç¥Ð¥Ã¥¯¤·¤Æ³Î¤«¤á¤Æ¤Ê¤¤¡£
ublas::colum -> Îó¤ò¼è¤Ã¤Æ¤¯¤ë¡£¤½¤ÎÎó¤Ë¥Ù¥¯¥È¥ë¤òÂåÆþ¤¹¤ë¤³¤È¤â²Äǽ
 using namespace boost::numeric::ublas;
 vector<double> v0(3), v1;
 matrix<double> m(3,3);
 
 colum(m,0) = v0;// m¤Î0ÎóÌܤËv¤òÂåÆþ
 v1 = colum(m,1) // v¤Ëm¤Î1ÎóÌܤòÂåÆþ
ublas::row -> ¹Ô¤Ë¤Ä¤¤¤Æ¾å¤ÈƱ¤¸¡£

mat¤ÎÉôʬ¹ÔÎó¤ò¼è¤ë
¡¡ublas::project( mat, ublas::range( 0, 2), ublas::range(0,2));
¤³¤ì¤Ç 00-11 ¤ÎÉôʬ¹ÔÎ󤬼è¤ì¤ë.range( ³«»Ï°ÌÃÖ, ½ªÎ»°ÌÃÖ).¡Ê1,2¡Ë¤Ê¤éÂè1¹Ô(Îó)ÌܤΤߤò¼è¤Ã¤Æ¤¯¤ë
range¤ò»È¤ï¤Ê¤¯¤Æ¤âslice¤ÇƱÍͤμÂÁõ¤¬¤Ç¤­¤ë¡£

ublas/vector_proxy.hpp

vector¤Ë´Ø¤·¤Æ¤ÏÂç³µ¤Î¤â¤Î¤¬¹ÔÎó¤ÈƱ¤¸¤ä¤êÊý¤ÇÉôʬvector¤¬¼è¤ì¤ë¡¥

using namespace boost::numeric::ublas;
void hoge( vector<double> v){
 vector_range< vector<double>> rv( v, range(0,3));
}
rv¤Ïv¤ÎÍ×ÁÇ0¡Á2¤Þ¤Ç¤Î¥¤¥Æ¥ì¡¼¥¿?¤¬Æþ¤Ã¤¿¥Ù¥¯¥È¥ë¤¬¤Ç¤­¤ë ¤³¤ÎÊÑ¿ô¤ÎÃͤòÊѹ¹¤¹¤ë¤È¸µ¤Î¥Ù¥¯¥È¥ë¤ÎÃͤâÊѲ½¤¹¤ë¤Î¤Çµ¤¤ò¤Ä¤±¤è¤¦

const¤¬¤Ä¤¤¤¿¾ì¹ç¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ë
void hoge( const ublas::vector<double> v){
	// Í×ÁÇa¤«¤éÍ×ÁÇb-1¤Þ¤Ç³ÊǼ¤µ¤ì¤ë
	const ublas::vector_range<const ublas::vector<double>> rv( v, ublas::range( a, b));
}
¥¿¥°

¤³¤Î¥Ú¡¼¥¸¤Ø¤Î¥³¥á¥ó¥È

mVpzrV Thanks a lot for the blog.Thanks Again. Really Great.

0
Posted by awesome things! 2014ǯ01·î21Æü(²Ð) 13:13:48 ÊÖ¿®

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

¥á¥ó¥Ð¡¼¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹