ºÇ½ª¹¹¿·¡§
numeric96key 2011ǯ02·î03Æü(ÌÚ) 18:14:38ÍúÎò
¤Þ¤È¤Þ¤Ã¤¿¤é¡¤¤µ¤é¤ËÀ°Íý¤¹¤ëͽÄê
µ¤¤Å¤¤¤¿¤³¤È¡¤¤É¤ó¤É¤ó½ñ¤¹þ¤ó¤Ç¤ß¤è¤¦
¡¡
¥×¥í¥°¥é¥àÎã¤Ç using ¤Ê¤É¤ò»È¤Ã¤Æ¾Êά¤·¤Æ¤¤¤ë¤È¤³¤í¤¬¤¢¤ê¤Þ¤¹¤¬¡¤Á´¤Æ½ñ¤¯¤Î¤¬ÌÌÅݤ«¤Ä¸«¤Å¤é¤¯¤Ê¤ë¤Î¤Ç¤¢¤¨¤Æ»È¤Ã¤Æ¤¤¤Þ¤¹¡¥¼ÂºÝ¤Ë»È¤¦ºÝ¤Ï using ¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Ï»È¤ï¤Ê¤¤Êý¤¬µÈ¤Ç¤¹¡¥
¡¡
¥×¥í¥°¥é¥àÎã¤Ç using ¤Ê¤É¤ò»È¤Ã¤Æ¾Êά¤·¤Æ¤¤¤ë¤È¤³¤í¤¬¤¢¤ê¤Þ¤¹¤¬¡¤Á´¤Æ½ñ¤¯¤Î¤¬ÌÌÅݤ«¤Ä¸«¤Å¤é¤¯¤Ê¤ë¤Î¤Ç¤¢¤¨¤Æ»È¤Ã¤Æ¤¤¤Þ¤¹¡¥¼ÂºÝ¤Ë»È¤¦ºÝ¤Ï using ¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Ï»È¤ï¤Ê¤¤Êý¤¬µÈ¤Ç¤¹¡¥
·¿Ì¾ | ÀâÌÀ | #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::colum -> Îó¤ò¼è¤Ã¤Æ¤¯¤ë¡£¤½¤ÎÎó¤Ë¥Ù¥¯¥È¥ë¤òÂåÆþ¤¹¤ë¤³¤È¤â²Äǽ
mat¤ÎÉôʬ¹ÔÎó¤ò¼è¤ë
¡¡ublas::project( mat, ublas::range( 0, 2), ublas::range(0,2));
¤³¤ì¤Ç 00-11 ¤ÎÉôʬ¹ÔÎ󤬼è¤ì¤ë.range( ³«»Ï°ÌÃÖ, ½ªÎ»°ÌÃÖ).¡Ê1,2¡Ë¤Ê¤éÂè1¹Ô(Îó)ÌܤΤߤò¼è¤Ã¤Æ¤¯¤ë
range¤ò»È¤ï¤Ê¤¯¤Æ¤âslice¤ÇƱÍͤμÂÁõ¤¬¤Ç¤¤ë¡£
°Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï¤¦¤í³Ð¤¨¡¢¥Ç¥Ð¥Ã¥¯¤·¤Æ³Î¤«¤á¤Æ¤Ê¤¤¡£
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¤ÇƱÍͤμÂÁõ¤¬¤Ç¤¤ë¡£
vector¤Ë´Ø¤·¤Æ¤ÏÂç³µ¤Î¤â¤Î¤¬¹ÔÎó¤ÈƱ¤¸¤ä¤êÊý¤ÇÉôʬvector¤¬¼è¤ì¤ë¡¥
const¤¬¤Ä¤¤¤¿¾ì¹ç¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ë
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.