存儲矩陣的規模怎麼計算
可以看出,我們僅需聲明一個長度為(1+n)n/2的一維數組array即可,剩餘的都是重復的元素。
假設一維數組存儲的是下三角部分,並且我們現在找的a[i][j]也是在下三角,則:
寫成完整的公式,如下所示
此時我們可以聲明一個長度為(1 + n) * n / 2 + 1的一維數組來存儲這個三角矩陣,+1是增加一個存儲常數的空間。
線代里的對角矩陣,除對角線外,其餘元素都是0:
我們這里說的是非零元素都集中在對角線上下若干條對角線的對角矩陣。
n階對睜散毀角矩陣的存儲有些困難,假設a條對角線是非0元,則一維數組array的大小為:
給定 i j,找對應的 k
如何壓縮?我們只需要存儲非0元即可,我們可以定義一個結構體:
進行壓縮後的存儲方式:
第一行表明悉備原掘逗矩陣是5 * 5,並且有3個非0元
Ⅱ MATLAB里如何輸入矩陣,矩陣如何運算
一、矩陣的表示方法岩畢
1、矩陣元素必須在」[]」內;
2、矩陣的同行元素之間用空格(或」,」)隔開;
3、矩陣的行與行之間用」;」(或回車符)隔開;
4、矩陣的元素可以是數值、變數、表達式或函數;
5、矩陣的尺寸不必預先定義。
二、矩陣的運算
1、算術運算
MATLAB的基本算術運算有:+(加)、-(減)、*(乘)、/(右除)、(左除)、^(乘方)、』(轉置)。運算是在矩陣意義下進行的,單個數據的算術運算只是一種特例。
(1)矩陣加減運算假定有兩個矩陣A和B,則可以由A+B和A-B實現矩陣的加減運算。運算規則是:若A和B矩陣的維數相同,則可以執行矩陣的加減運算,A和B矩陣的相應元素相加減。如果A與B的維數不相同,則MATLAB將給出錯誤信息,提示用戶兩個矩陣的維數不匹配。
(2)矩陣乘法假定有兩個矩陣A和B,若A為m*n矩陣,B為n*p矩陣,則C=A*B為m*p矩陣。
(3)矩陣除法在MATLAB中,有兩種矩陣除法運算:和/,分別表示左除和右除。如果A矩陣是非奇異方陣,則AB和B/A運算可以實現。
AB等效於A的逆左乘B矩陣,也就是inv(A)*B,而B/A等效於A矩陣的逆右乘B矩陣,也就是B*inv(A)。對於含有標量的運算,兩種除法運算的結果相同。對於矩陣來說,左除和右除表示兩種不同的除數矩陣和被除數矩陣的關系,一般AB≠B/A。
(4)矩陣的乘方一個矩陣的乘方運算可以表示成A^x,要求A為方陣,x為標量。
(5)矩陣的轉置對實數矩陣進行行列互換,對復數矩陣,共軛轉置,特殊的,操作符.』共軛不轉置(見點運算);
(6)點運算在MATLAB中,有一種特殊的運算,因為其運算符是在有關算術運算符前面加點,所以叫點運算。點運算符有.*、./、.和.^。兩矩陣進行點運算是指它們的對應元素進行相關運算,要求兩矩陣的維參數相同。
2、關系運算
MATLAB提供了6種關系運算符:<(小於)、<=(小於或等於)、>(大於)、>=(大於或等於)、==(等於)、~=(不等於)。關系運算符的運演算法則為:
(1)當兩個比較量是標量時,直接比較兩數的大小。若關系成立,關系表達式結果為1,否則為0;
(2)當參與比較的量是兩個維數相同的矩陣時,比較是對兩矩陣相同位置的元素按標量關系運算規則逐個進行,並給出元素比較結果。最終的關系運算的結果是一個維數與原矩陣相同的矩陣,它的元素由0或1組成;
(3)當參與比較的一個是標量,而另一個是矩陣時,則把標量與矩陣的每一個元素按標量關系運算規則逐個比較,並給出元素比較結果。最終的關系運算的結果是一個維數與原矩陣相同的矩陣,粗裂芹它的元素由0或1組成。
3、邏輯運算
MATLAB提供了3種邏輯運算符:&(與)、|(或)和~(非)。邏輯運算的運演算法則為:
(1)在邏輯運算中,確認非零元素為真,用1表示,零元素為假,用0表示;
(2)設參與邏輯運算的是兩個標量a和b,那麼,a&b a,b全為非零時,運算結果為1,否則源旅為0。a|b a,b中只要有一個非零,運算結果為1。~a當a是零時,運算結果為1;當a非零時,運算結果為0。
(3)若參與邏輯運算的是兩個同維矩陣,那麼運算將對矩陣相同位置上的元素按標量規則逐個進行。最終運算結果是一個與原矩陣同維的矩陣,其元素由1或0組成;
(4)若參與邏輯運算的一個是標量,一個是矩陣,那麼運算將在標量與矩陣中的每個元素之間按標量規則逐個進行。最終運算結果是一個與矩陣同維的矩陣,其元素由1或0組成;
(5)邏輯非是單目運算符,也服從矩陣運算規則;
(6)在算術、關系、邏輯運算中,算術運算優先順序最高,邏輯運算優先順序最低。
(2)存儲矩陣的規模怎麼計算擴展閱讀:
1.獲取矩陣元素
可以通過下標(行列索引)引用矩陣的元素,如Matrix(m,n)。
也可以採用矩陣元素的序號來引用矩陣元素。
矩陣元素的序號就是相應元素在內存中的排列順序。
在MATLAB中,矩陣元素按列存儲。
序號(Index)與下標(Subscript)是一一對應的,以m*n矩陣A為例,矩陣元素A(i,j)的序號為(j-1)*m+i。
其相互轉換關系也可利用sub2ind和ind2sub函數求得。
2.矩陣拆分
利用冒號表達式獲得子矩陣:
(1)A(:,j)表示取A矩陣的第j列全部元素;A(i,:)表示A矩陣第i行的全部元素;A(i,j)表示取A矩陣第i行、第j列的元素。
(2)A(i:i+m,:)表示取A矩陣第i~i+m行的全部元素;A(:,k:k+m)表示取A矩陣第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩陣第i~i+m行內,並在第k~k+m列中的所有元素。
此外,還可利用一般向量和end運算符來表示矩陣下標,從而獲得子矩陣。end表示某一維的末尾元素下標。
利用空矩陣刪除矩陣的元素:
在MATLAB中,定義[]為空矩陣。給變數X賦空矩陣的語句為X=[]。注意,X=[]與clear X不同,clear是將X從工作空間中刪除,而空矩陣則存在於工作空間中,只是維數為0。
3、特殊矩陣
(1)魔方矩陣魔方矩陣有一個有趣的性質,其每行、每列及兩條對角線上的元素和都相等。對於n階魔方陣,其元素由1,2,3,…,n2共n2個整數組成。MATLAB提供了求魔方矩陣的函數magic(n),其功能是生成一個n階魔方陣。
(2)范得蒙矩陣范得蒙(Vandermonde)矩陣最後一列全為1,倒數第二列為一個指定的向量,其他各列是其後列與倒數第二列的點乘積。可以用一個指定向量生成一個范得蒙矩陣。在MATLAB中,函數vander(V)生成以向量V為基礎向量的范得蒙矩陣。
(3)希爾伯特矩陣在MATLAB中,生成希爾伯特矩陣的函數是hilb(n)。使用一般方法求逆會因為原始數據的微小擾動而產生不可靠的計算結果。MATLAB中,有一個專門求希爾伯特矩陣的逆的函數invhilb(n),其功能是求n階的希爾伯特矩陣的逆矩陣。
(4)托普利茲矩陣托普利茲(Toeplitz)矩陣除第一行第一列外,其他每個元素都與左上角的元素相同。生成托普利茲矩陣的函數是toeplitz(x,y),它生成一個以x為第一列,y為第一行的托普利茲矩陣。這里x,y均為向量,兩者不必等長。toeplitz(x)用向量x生成一個對稱的托普利茲矩陣。
(5)伴隨矩陣MATLAB生成伴隨矩陣的函數是compan(p),其中p是一個多項式的系數向量,高次冪系數排在前,低次冪排在後。
(6)帕斯卡矩陣我們知道,二次項(x+y)n展開後的系數隨n的增大組成一個三角形表,稱為楊輝三角形。由楊輝三角形表組成的矩陣稱為帕斯卡(Pascal)矩陣。函數pascal(n)生成一個n階帕斯卡矩陣。
網路——MATLAB
Ⅲ 多維數組-矩陣的壓縮存儲-特殊矩陣
特殊矩陣
所謂特殊矩陣是指非零元素或零元素的分布有一定規律的矩陣 常見的有對稱矩陣 三角矩陣和對角矩陣等
對稱矩陣
( )對稱矩陣
在一個n階方陣A中 若元素滿足下述性質
a ij =a ji ≤i j≤n
則稱A為對稱矩陣
【例】下圖便是一個 階對稱矩陣
( )對稱矩陣的壓縮存儲
對稱矩陣中的元素關於主對角線對稱 故只要存儲矩陣中上三角或下三角中的元素 讓每兩個對稱的元素共享一個存儲空間 這樣
能節約近一半的存儲空間
①按 行優先順序 存儲主對角線(包括對角線)以下的元素
即按a a a …… a n a n … a n n 次序存大旦放在一個向量sa[ n(n+ )/ ]中(下三角矩陣
中 元素總數為n(n+ )/ )
其中
sa[ ]= a
sa[ ] = a
……
sa[n(n+ )/ ]= a n n
②元素a ij 的存放位置
a ij 元素前有i行(從第 行到第i 行) 一共有
+ +…+i=i×(i+ )/ 個元素;
在第i行上 aij之前恰有j個元素(即a i a il … a i j ) 因此有
sa[i×(i+ )/ +j]= a ij
③a ij 和sa[k]之間的對應關系
若i≥j k=i×(i+ )/ +j ≤k <n(n+1) 2
若i <j,k=j×(j+1) 0≤k<n(n+1)="" 2+i="" 2
令I=max(i,j),J=min(i,j),則k和i,j的對應關系可統一為:
k=i×(i+1)/2+j 0≤k <n(n+1) 2
(3)對稱矩陣的地址計算公式
LOC(a ij )=LOC(sa[k])
=LOC(sa[0])+k×d=LOC(sa[0])+[I×(I+1)/2+J]×d
通過下標變換公式,能立即找到矩陣元素a ij 在其壓縮存儲表攜歷示sa中的對應位置k。tW.WingwiT因此是隨機存取結構。
【例】a 21 和a 12 均存儲在sa[4]中滾隱擾,這是因為
k=I×(I+1)/2+J=2×(2+1)/2+1=4
lishixin/Article/program/sjjg/201311/23900
Ⅳ 如何在分布式系統里實現大矩陣的存儲,以及完成乘法計算
把A矩陣放到A1:J10的區域里,把B矩陣放在K1:K10里, 在L1輸入 =SUM(A1:J1*TRANSPOSE($k$1:$k$10)),注意同時按Alt、Shift和回車(數組公式) 然手滑鼠移到L1右上角,雙擊那派洞個「+",結果為唯歲新塵山枯矩陣。
Ⅳ 矩陣規模4*1~4*4,8*1~8*16.......是個什麼意思啊
1、8x16 矩陣:確實是8路輸入、16路輸出,確定一定以及肯定。
2、矩數敗嫌陣的最主要功能是切換,也就是說:輸入的任何一路信號枯春都可薯手以切換到輸出的任何一路埠。
3、這里不存在超載的問題,而冗餘的概念相當於熱備份,一般信號不需要冗餘,只要控制和電源有的時候需要,而做到真冗餘,又必須系統是模塊化插板式的結構。
4、我是矩陣專家,有關矩陣任何問題,都可以問我!
Ⅵ 一個存儲矩陣有64行,64列,則存儲陣列的容量為多少
這個容量的大約是5到6分左右吧
Ⅶ 已知EPROM地址范圍無地址重疊怎樣求其存儲容量
已知 EPROM 地址范彎猜圍 30800H~30FFFH,無地址重疊。如何埋改型求其存儲容量?
存儲容量 =單元個數殲遲 × 位數
= (末地址 - 首地址 + 1 ) × 位數
位數,不明。
容量,求不出來。
Ⅷ 數據結構,求無向圖用鄰接矩陣和鄰接表的存儲空間大小,怎麼算
鄰接表所態毀蘆需的存儲空間為e(邊數),但不適合查詢兩點間是否存在路徑
鄰接矩陣所需的存儲空間為你n^2,適合查詢兩點間是否存在路徑
對於第二帆帶問,鄰接表所需的存儲空間為9900,鄰接矩陣所需的存儲空間為你n^2=10000,差不多,所以選性能更優的鄰接矩陣
實際上像(2)余畢這種稠密圖(其實是個滿圖)一般適合鄰接矩陣
Ⅸ 為什麼存儲器大小要寫成兩個數相乘的格式,例如128*128矩陣存儲器
得到的是3*4的距陣啊,很簡單的算術問題。3*1+5*5=28,得到是是第一行第一列的數值,3*2+5*6=36,得到是是第一行第二列的數值,3*3+5*7=44,得到是是第一行第三列的數彎雹值,3*4+5*8=52,得到是是第一行第四列的數值,這是第一行的四個數,。第卜鬧含二行第一列的數值是0*1+1*5=5,第二行第二列的數值是0*2+1*6=6,第二行第三列的數值是0*3+1*7=7,第二行第四列的數值是0*4+1*8=8,這是第二行的四個數值。第三行第一列的數值是4*1+2*5=14,第三行第二列的數值是4*2+2*6=20,第三行第三列的數值是4*3+2*7=26,第三行第四列的數值是4*4+2*8=32,第三行的四個型笑數。得到的結果是 28 36 44 52 5 6 7 8 14 20 26 32
Ⅹ 如何存儲和計算超大規模稀疏矩陣
代碼如下:
#生成單位矩陣,用普通矩陣無法創建,所以用sparseMatrix來創建。
num_samples=180000
rownumber=c(1:num_samples)
colnumber=c(1:num_samples)
value=c(rep(1,each=num_samples))
M=sparseMatrix(rownumber,colnumber,x=value)
#給單位矩陣賦值,全部賦值完成後是一個4*50*180000個數值的對稱稀疏矩陣。
for(i in 1:num_samples){
w=W #有50個浮點型數值。
n=neighbors #有50個整型數值。
M=M-t(w)
M=M-w
M=M+w%*%t(w)
}