矩陣解壓縮-九游会j9娱乐平台
㈠ 稀疏矩陣壓縮存儲:csr/csc (compress sparse row/column)
假設有一非對稱 矩陣a,用csr表示需要三個向量: val , col_ind , row_ptr 。表示的意義為:
, then
, then
並約定: ,其中, 為a中非零值的個數
它的csr表示為:
特別說明一下 row_ptr 的表示含義:
如 row_ptr[2]=3 ,表明矩陣a中第二行(從左至右)的第一個非零值是a中所有非零值的第3個; row_ptr[5]=13 ,表明矩陣a中第五行(從左至右)的第一個非零值是a中所有非零值的第13個; row_ptr[7]=20 指示a中非零值nnz的個數:nnz=20-1=19。
更新csc的介紹 :它的基本思想和csr完全相同,可以看作csr的轉置,因此這里僅對csc進行簡單的舉例介紹。以song han的eie論文為例,pe應存儲的weight矩陣為(相同顏色的對應一個pe):
這一矩陣的採用csc表示為:
解釋 」:和上面的csr表示不同,這里的索引從0開始(上面的csr舉例從1開始,當然也可以從0開始)。index對應的是非零值所在行的index,而pointer指示原始矩陣中每列非零值的數量,pointer的最後一位指示矩陣中非零值的個數。
如 pointer[1]=3 ,表明第二列之前(第一列)含三個非零值,第二列(由上至下)第一個非零值應是所有非零值中的第四個; pointer[2]=4 ,表明第三列之前有四個非零值,第三列(由上至下)第一個非零值應是所有非零值中的第五個; pointer[3] 和 pointer[4] 相等,表明第四列沒有非零值;最後, pointer[8]=13 ,表示weight矩陣中共有13個非零值。
需要注意的是,這里的row index是相對的,即相對前一個非零值或第一行的index,上面的csr中的column index是絕對的。 可根據實際要求選擇絕對或相對表示。
㈡ 特殊矩陣的壓縮存儲:上三角、對稱、下三角存儲,有三個問題。求大俠們解答~親一個~這個圖能看清嗎
1.k=n*(n 1)/2的原因是:對於三角矩陣,從1到n的總和是這么多,也就是說整個矩陣有這么多元素。另外正三角陣對應正方形。
對稱矩陣滿足a的轉置也就是自身的特點,元素上,a[i,j] = a[j,i]。實際上的存儲可以利用三角陣。所以老實說我對於他對稱陣演算法為什麼少一個元素也有疑惑。
可能是三角陣可以對應不等長的矩陣,所以造成了k值不一樣。
2.上三角陣,存在的元素是滿足[1<= j <=n, i >= j]的關系[這里用i表橫坐標j表縱坐標],如果是長3寬4的當然不能和長4寬3的相提並論,試著畫畫就明白了。
3.對稱陣不會出現像三角陣那樣有一小角還是其他數字的情況。這個其他數字就是(6 1)-1=6。
4.壓縮存儲,只是將部分符合條件的矩陣減少一部分的存儲空間。老實說我也感覺不很有用,除非他處理的數據本身必然具備此類特點。
5.固定的,多試幾次自己記下來然後找找就好。如果沒記錯的話,在矩陣上畫畫就可以看出來。
6.stdlib.h是標準的輸入輸出庫,最為常用,至少裡麵包括了scanf等函數,只要你需要printf你就不能扔掉它。否則會出現函數未定義的問題。畢竟語言本身不提供函數類庫,類庫需要另行引用。
㈢ 設有10階對稱矩陣a,採用壓縮存儲方式(以行序為主序存儲,則a11的地址為1),則a85的地址為。
首先,壓縮存儲對於對稱矩陣來說,等於是存對角線的右上半加對角線的元素,或者是左下半加對角線的元素,其他位置不存儲。
這題是使用行優先存儲,即先存a11,再a12,再a22,再a13,再a23,再a33,以此類推,一直到a85,所以a85的位置計算為:(1 2 3 4 5 6 7) 5=33,選擇答案b。
對稱矩陣(symmetric matrices)是指元素以主對角線為對稱軸對應相等的矩陣。在線性代數中,對稱矩陣是一個方形矩陣,其轉置矩陣和自身相等。
(3)矩陣解壓縮擴展閱讀
lapack是由美國國家科學基金等資助開發的著名公開軟體。lapack包含了求解科學與工程計算中最常見的數值線性代數問題,如求解線性方程組、線性最小二乘問題、特徵值問題和奇異值問題等。
lapack提供了豐富的工具函式,可用於諸如解多元線性方程式、線性系統方程組的最小平方解、計算特徵向量、用於計算矩陣qr分解的householder轉換、以及奇異值分解等問題。 在netlib亦提供了api經簡化的fortran 95版本的lapack95。lapack以bsd授權的方法釋出。