為什么要壓縮特殊矩陣 稀疏矩陣一般的壓縮方式有兩種
什么是壓縮矩陣?特殊矩陣的壓縮原則有哪些,矩陣的壓縮存儲是什么?特殊矩陣和稀疏矩陣哪一種采用壓縮存儲會失去隨機存取的功能?為什么?對稀疏矩陣進行壓縮存儲的目的是什么?對特殊矩陣的壓縮可以降低運算的時間復(fù)雜度嗎?
本文導(dǎo)航
什么情況用解碼矩陣
在這里分開來給你解釋
矩陣是許多科學(xué)計算、工程數(shù)學(xué)尤其是數(shù)值分析中經(jīng)常研究的對象,矩陣也就是二維數(shù)組,所以它可以采用順
序存儲是來存儲其中的元素。但有時矩陣的階數(shù)很高,同時在矩陣中游很多值相同的元素,或大多數(shù)元素的值為
零,這時再采用嚴(yán)格的順序存儲顯然是很浪費空間的,因為存儲零元素或許多值相同的元素是沒有意義的,因此為
了節(jié)省存儲空間,對這類矩陣通常采用壓縮存儲。
壓縮存儲:為多個值相同的元素值分配一個存儲空間,對零元素不分配存儲空間。
特殊矩陣:各個元素的分布有一定規(guī)律
系數(shù)矩陣:矩陣中多數(shù)元素值為零。
對矩陣壓縮的目的
【知識點】
若矩陣A的特征值為λ1,λ2,...,λn,那么|A|=λ1·λ2·...·λn
【解答】
|A|=1×2×...×n= n!
設(shè)A的特征值為λ,對于的特征向量為α。
則 Aα = λα
那么 (A2-A)α = A2α - Aα = λ2α - λα = (λ2-λ)α
所以A2-A的特征值為 λ2-λ,對應(yīng)的特征向量為α
A2-A的特征值為 0 ,2,6,...,n2-n
【評注】
對于A的多項式,其特征值為對應(yīng)的特征多項式。
線性代數(shù)包括行列式、矩陣、線性方程組、向量空間與線性變換、特征值和特征向量、矩陣的對角化,二次型及應(yīng)用問題等內(nèi)容。
n階矩陣壓縮存儲一共多少個元素
二維數(shù)組在形式上是矩陣,因此一般用二維數(shù)組來存儲矩陣。在不壓縮存儲的情況下,矩陣采用按行優(yōu)先或按列優(yōu)先方式存儲,占用的存儲單元數(shù)等于矩陣的元素個數(shù)。在實際應(yīng)用中,經(jīng)常出現(xiàn)一些階數(shù)很高的矩陣,同時在矩陣中非零元素呈某種規(guī)律分布或者矩陣中有大量的零元素,若仍然用常規(guī)方法存儲,可能存儲重復(fù)的非零元素或零元素,這將造成存儲空間的大量浪費。因此對這類矩陣進行壓縮存儲,從而合理地利用存儲空間。
為了節(jié)省存儲空間,可以利用特殊矩陣的規(guī)律,對它們進行壓縮存儲,也就是說為多個值相同的元素只分配一個存儲單元,對零元素不分配空間。適合壓縮存儲的矩陣一般是值相同的元素或者零元素在矩陣中分布有一定規(guī)律的特殊矩陣和稀疏矩陣。常見的特殊矩陣有對稱矩陣、三角矩陣和對角矩陣。
稀疏矩陣一般的壓縮方式有兩種
稀疏矩陣壓縮存儲后,必會失去隨機存取功能。
稀疏矩陣在采用壓縮存儲后將會失去隨機存儲的功能。因為在這種矩陣中,非零元素的分布是沒有規(guī)律的,為了壓縮存儲,就將每一個非零元素的值和它所在的行、列號做為一個結(jié)點存放在一起,這樣的結(jié)點組成的線性表中叫三元組表,它已不是簡單的向量,所以無法用下標(biāo)直接存取矩陣中的元素。
稀疏矩陣常用的兩種存儲方法
對稀疏矩陣進行壓縮存儲目的是節(jié)省存儲空間。
存儲矩陣的一般方法是采用二維數(shù)組,其優(yōu)點是可以隨機地訪問每一個元素,因而能夠較容易地實現(xiàn)矩陣的各種運算。
但對于稀疏矩陣而言,若用二維數(shù)組來表示,會重復(fù)存儲了很多個0了,浪費空間,而且要花費時間來進行零元素的無效計算。所以必須考慮對稀疏矩陣進行壓縮存儲。
擴展資料
優(yōu)點
稀疏矩陣的計算速度更快,因為MATLAB只對非零元素進行操作,這是稀疏矩陣的一個突出的優(yōu)點。假設(shè)矩陣A,B中的矩陣一樣,計算2*A需要一百萬次的浮點運算,而計算2*B只需要2000次浮點運算。
因為MATLAB不能自動創(chuàng)建稀疏矩陣,所以要用特殊的命令來得到稀疏矩陣。算術(shù)和邏輯運算都適用于稀疏矩陣。對于一個用二維數(shù)組存儲的稀疏矩陣Amn,如果假設(shè)存儲每個數(shù)組元素需要L個字節(jié),那么存儲整個矩陣需要m*n*L個字節(jié)。
稀疏矩陣采用壓縮存儲后的缺點
1.k=n*(n+1)/2的原因是:對于三角矩陣,從1到N的總和是這么多,也就是說整個矩陣有這么多元素。另外正三角陣對應(yīng)正方形。
對稱矩陣滿足A的轉(zhuǎn)置也就是自身的特點,元素上,a[i,j] = a[j,i]。實際上的存儲可以利用三角陣。所以老實說我對于他對稱陣算法為什么少一個元素也有疑惑。
可能是三角陣可以對應(yīng)不等長的矩陣,所以造成了k值不一樣。
2.上三角陣,存在的元素是滿足[1<= j <=n, i >= j]的關(guān)系[這里用i表橫坐標(biāo)j表縱坐標(biāo)],如果是長3寬4的當(dāng)然不能和長4寬3的相提并論,試著畫畫就明白了。
3.對稱陣不會出現(xiàn)像三角陣那樣有一小角還是其他數(shù)字的情況。這個其他數(shù)字就是(6+1)-1=6。
4.壓縮存儲,只是將部分符合條件的矩陣減少一部分的存儲空間。老實說我也感覺不很有用,除非他處理的數(shù)據(jù)本身必然具備此類特點。
5.固定的,多試幾次自己記下來然后找找就好。如果沒記錯的話,在矩陣上畫畫就可以看出來。
6.stdlib.h是標(biāo)準(zhǔn)的輸入輸出庫,最為常用,至少里面包括了scanf等函數(shù),只要你需要printf你就不能扔掉它。否則會出現(xiàn)函數(shù)未定義的問題。畢竟語言本身不提供函數(shù)類庫,類庫需要另行引用。
掃描二維碼推送至手機訪問。
版權(quán)聲明:本文由尚恩教育網(wǎng)發(fā)布,如需轉(zhuǎn)載請注明出處。