稀疏矩陣在節省空間和提高計算速度方面的作用

2021-08-08 11:54:44 字數 1505 閱讀 5590

sparse函式可以用來產生稀疏矩陣。語句s=sparse(i,j,s,m,n)能夠利用向量i,j,s來產生mxn的稀疏矩陣s,具體的產生方法為s(i(k),j(k))==s(k)。其中i,j是s中不為0的元素的行索引和列索引。因此只能是正整數。此外,s=sparse(a)可以將矩陣a轉化成稀疏矩陣形式s。

以下為**

i=1:1000;

j=randperm(1000); %隨機排列1~1000的所有整數

s=rand(1,1000); %生成1*1000的服從(0,1)連續均勻分布的向量

s=sparse(i,j,s);

fs=full(s); %s矩陣的非稀疏格式

空間對比

whos

name size bytes class attributes

fs 1000x1000 8000000

double

s 1000x1000 24008

double sparse

ans 1x1 8

double

i 1x1000 8000

double

j 1x1000 8000

double

s 1x1000 8000

double

時間對比

>>tic;s2=s*s;toc
時間已過 0.059243 秒。

>> tic;fs2=fs*fs;toc
時間已過 0.655330 秒。

應當在準備好資料後用sparse函式生成稀疏矩陣,而不是先建立乙個大型稀疏矩陣然後用s(i,j)來賦值,後者效率很低

對比**

clear;

i=1:1000; %行序號

j=randperm(1000); %隨機排列的列序號

n=rand(1,1000); %對應位置的元素值

tic;s1=sparse(i,j,n,1000,1000);toc %用sparse函式生成稀疏矩陣時間

tic;

s2=spalloc(1000,1000,1000);

for k=1:1000

s2(i(k),j(k))=n(k);

endtoc %先建立乙個大稀疏矩陣s,然後在程式中用s(i,j)的方式給它賦值

時間已過 0.023900 秒。

時間已過 0.090753 秒。

oracle壓縮資料以節省空間和提高速度

使用表壓縮來節省空間並提高查詢效能。很多決策支援系統通常都涉及到儲存於幾個特大表中的大量資料。隨著這些系統的發展,對磁碟空間的需求也在快速增長。在當今的環境下,儲存著數百tb 太位元組 的資料倉儲已經變得越來越普遍。為了幫助處理磁碟容量問題,在oracle9i第2版中引入了表壓縮特性,它可以極大地減...

資料結構 陣列和稀疏矩陣

稀疏矩陣 將陣列的所有元素儲存在一塊位址連續的記憶體單元中,這是一種順序儲存結構。性質 1 陣列中的資料元素數目固定 2 陣列中的所有資料元素具有相同的資料型別 3 陣列中的每個資料元素都有一組唯一的下標 4 陣列是一種隨機儲存結構,可隨機訪問陣列中的任意資料元素。一維陣列 loc ai loc a...

Python 稀疏矩陣 sparse 儲存和轉換

稀疏矩陣 sparsep from scip程式設計客棧y import sparse 稀疏矩陣的儲存形式 在科學與工程領域中求解線性模型時經常出現許多大型的矩陣,這些矩陣中大部分的元素都為0,被稱為稀疏矩陣。用numpy的ndarray陣列儲存這樣的矩陣,將很浪費記憶體,由於矩陣的稀疏特性,可以通...