资源描述:
《IDL矩阵运算.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、阵就是数组。矩阵初始化:用中括号[]而不是圆括号()矩阵元素取值:可用中括号或者圆括号例:IDL>A=[[1,2],[3,4]]IDL>print,a1234IDL>print,a[0]1IDL>print,a(1)2IDL>print,a[1,1]4获取矩阵的第一行:print,A[*,0]IDL>print,a[*,0]12获取矩阵的第二行:print,A[*,1]获取矩阵的第一列:print,A[0,*]IDL>print,a[0,*]13获取i行j列元素,A[j,i](注意列在前行在后)IDL>PRINT,A[0
2、,1]3A#B相当于B乘A,而A*B没有什么意义。如果不可乘,也会有一个结果,自动转换比如A=(1,2),B=(2,3,4)A#B=243648B#A=234468矩阵转置:TRANSPOSE(A)或者ROTATE(A,1)如果仅仅是打印,可以使用PM,APM,array就是PRINT,TRANSPOSE(array)例子:;Defineanarrayarrarr=[[1.0,3.0],[0.0,4.0],[2.0,1.0]];PrintusingPMandPRINTPM,arr&PRINT&PRINT,arrIDLpr
3、ints:1.000000.0000002.000003.000004.000001.000001.000003.000000.0000004.000002.000001.00000求逆矩阵:MATRIX_POWER(A,-1)该函数同样可以求矩阵的其他次方MATRIX_POWER(A,-2)矩阵元素乘方:A^2IDL>print,a123IDL>print,a^2149要注意:a^-1语法错误,要写成a^(-1)a^-1不是a的逆阵,而是内部元素的倒数构成的矩阵,但是有一个问题:都是整数,比如2,倒数不是0.5,而是0
4、解决办法是,A的其中一个元素必须是浮点数,比如[1,2],[2,4]可以写成[1,2.0],[2,4]这样就对了。如何对不同的列/行增加不同的数值?比如A的第一列加2,第二列加1IDL>A=[[1,2,3],[4,5,6],[7,8,9]]IDL>PRINT,A123456789IDL>B=[TRANSPOSE(replicate(2,3)),TRANSPOSE(replicate(1,3)),TRANSPOSE(replicate(0,3))]IDL>PRINT,B210210210IDL>PRINT,A+B33366
5、6999更简便的方法,就是直接对某行某列进行运算第一列加2:A(0,*)=A(0,*)+2如何交换一行、列?交换第一列和第三列过程如下:IDL>A=[[1,2,3],[4,5,6],[7,8,9]]IDL>PRINT,A123456789IDL>TEMP=A[0,*]IDL>A[0,*]=A[2,*]IDL>A[2,*]=TEMPIDL>PRINT,A321654987行列求和IDL>A=[[1,2,3],[4,5,6],[7,8,9]]IDL>print,a123456789IDL>PRINT,TOTAL(A,1);每
6、行求和结果6.0000015.000024.0000IDL>PRINT,TOTAL(A,2);每列求和结果12.000015.000018.0000