matlab稀疏存儲
對稀疏矩陣進行壓縮存儲目的是節省存儲空間。
存儲矩陣的一般方法是採用二維數組,其優點是可以隨機地訪問每一個元素,因而能夠較容易地實現矩陣的各種運算。
但對於稀疏矩陣而言,若用二維數組來表示,會重復存儲了很多個0了,浪費空間,而且要花費時間來進行零元素的無效計算。所以必須考慮對稀疏矩陣進行壓縮存儲。
(1)matlab稀疏存儲擴展閱讀
優點
稀疏矩陣的計算速度更快,因為MATLAB只對非零元素進行操作,這是稀疏矩陣的一個突出的優點。假設矩陣A,B中的矩陣一樣,計算2*A需要一百萬次的浮點運算,而計算2*B只需要2000次浮點運算。
因為MATLAB不能自動創建稀疏矩陣,所以要用特殊的命令來得到稀疏矩陣。算術和邏輯運算都適用於稀疏矩陣。對於一個用二維數組存儲的稀疏矩陣Amn,如果假設存儲每個數組元素需要L個位元組,那麼存儲整個矩陣需要m*n*L個位元組。
㈡ matlab稀疏存儲一定會提高速度嗎
您好,很高興回答您的問題。稀畢瞎疏儲存不一定會提高速度,稀疏儲存只儲存所有非零元素的值和位置,會提高元素儲存的效率,但是也要注意外在條旅數判件,用在不恰當的時候可能會適得拆改其反,降低儲存的速度。
㈢ MATLAB 生成稀疏矩陣
稀疏矩陣是指很少非零元素的矩陣,這瞎雹悔樣的矩陣就成為稀疏矩陣,這種特性提供了矩陣存儲空間和計算時間的優點。 我們可以使用MATLAB函數sparse把它轉換成稀疏矩陣,該函數語法為: S=sparse(A)函數sparse()的更常用的用法是用來產生稀疏矩陣,具體語法如下: S=vsparse(r,c,s,m,n)其中r和c是我們希望產生的稀疏矩陣的矩陣中非零元素的行和列索引向量。參數s是一個向量,它包含索引對肆轎(r,c)對應的數值,m和n是結果矩陣的行維數和列維數。 如果要獲得完成的矩陣,可以使用full()函數,函數語法磨正: A=full(s) 針對你的問題,要產生上三角稀疏矩陣,一個可能的思路是先產生上三角正常矩陣,在將其稀疏化 A = triu(ones(4,4))上述函數用來產生一個上三角矩陣,所以 S=sparse(A)將其轉化為稀疏矩陣
㈣ 誰給詳細解釋下 matlab里的稀疏帶狀矩陣創建命令 SM=spdiags(B,d,m,n)
產生稀疏存儲矩陣
sparse可以講完全存儲方式轉換為稀疏存儲方式,那麼,當使用稀疏矩陣時,要先產生完全存儲方式的矩陣,然後再轉換,這顯然是不可取的,MATLAB有自己產生稀疏矩陣的函數spconvert:
B=spconvert(A);A為一個m*3或m*4的矩陣,A的每一列的意義分別為:
(i,1)第i非零元素所在行
(i,2)第i非零元素所在列
(i,3)第i非零元素的實部
(i,4)第i非零元素的虛部
3.帶狀(對角)稀疏矩陣
函數 spdiags
格式 [B,d] = spdiags(A) %從矩陣A中提取所有非零對角元素,這些元素保存在矩陣B中,向量d表示非零元素的對角線位置。
B = spdiags(A,d) %從空岩槐A中提取由d指定的對角線元素,並存放在B中。
A = spdiags(B,d,A) %用B中的列替換A中由d指定的對角線元素,輸出稀疏棗禪矩陣。
A = spdiags(B,d,m,n) %產斗友生一個m×n稀疏矩陣A,其元素是B中的列元素放
在由d指定的對角線位置上。
例1
>>A = [11 0 13 0
0 22 0 24
0 0 33 0
41 0 0 44
0 52 0 0
0 0 63 0
0 0 0 74];
>>[B,d] = spdiags(A)
B =
41 11 0
52 22 0
63 33 13
74 44 24
d =
-3 %表示B的第1列元素在A中主對角線下方第3條對角線上
0 %表示B的第2列在A的主對角線上
2 %表示B的第3列在A的主對角線上方第2條對角線上
例1
>> B=[1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16];
>> d=[-2 0 1 3];
>> A=spdiags(B,d,4,4);
>> full(A)
ans =
2 7 0 16
0 6 11 0
1 0 10 15
0 5 0 14
㈤ 稀疏矩陣的存儲空間
一個稀疏矩陣中有許多元素等於零,這便於矩陣的計算和保存.如果Matlab把一個矩陣當作稀疏矩陣,那麼只需在m×3的矩陣中存儲m個非零項.第1列是行下標,第2列是列下標,第3列是非零元素值,不必保存零元素.如果存儲一個浮點數要8個位元組,存儲每個下標要4個位元組,那麼整個矩陣在內存中存儲需要1 6×m個位元組.
A = e y e ( 1 0 0 0 ) ;
得到一個1 0 0 0×1 0 0 0的單位矩陣,存儲它需要8 MB空間.如果使用命令:
B = s p e y e ( 1 0 0 0 ) ;
用一個1 0 0 0×3的矩陣來代表,每行包含有一個行下標,列下標和元素本身.只需1 6 K B的空間就可以存儲1 0 0 0×1 0 0 0的單位矩陣,它只需要滿單位矩陣的0 . 2 %存儲空間.對於許多的廣義矩陣也可這樣來作.
㈥ MATLAB如何導入大型稀疏矩陣
方法一:把你的知扮弊m文件和xls文件放在同一目錄下,路徑不要有中文。如
數據文件為dat.xls。m文件如下:
data=xlsread('缺讓dat.xls');
方法二:數據文件與m文件不在同一目錄,要寫明數據文件路搭族徑;
如:data=xlsread('c:\dat.xls')