日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

初始化稀疏矩阵 matlab,访问稀疏矩阵- MATLAB Simulink- MathWorks 中国

發布時間:2024/9/30 循环神经网络 88 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初始化稀疏矩阵 matlab,访问稀疏矩阵- MATLAB Simulink- MathWorks 中国 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

稀疏矩陣運算中的索引

由于稀疏矩陣是以壓縮稀疏列格式存儲的,因此為稀疏矩陣進行索引的相關成本與為滿矩陣進行索引的相關成本不同。在只需更改稀疏矩陣中的若干元素時,這類成本可忽略不計,因此,在這類情況下,通常使用常規數組索引來重新分配值:

B = speye(4);

[i,j,s] = find(B);

[i,j,s]

ans =

1 1 1

2 2 1

3 3 1

4 4 1

B(3,1) = 42;

[i,j,s] = find(B);

[i,j,s]

ans =

1 1 1

3 1 42

2 2 1

3 3 1

4 4 1在存儲新矩陣時,為使 42 位于 (3,1) 位置,MATLAB 會在非零值向量和下標向量中插入額外的一行,然后移動 (3,1) 后面的所有矩陣值。

如果線性索引超過 2^48-1(即當前矩陣中允許的元素數上限),使用線性索引在大型稀疏矩陣中訪問或指定元素將失敗。

S = spalloc(2^30,2^30,2);

S(end) = 1

Maximum variable size allowed by the program is exceeded.

要訪問其線性索引大于 intmax 的元素,請使用數組索引:

S(2^30,2^30) = 1

S =

(1073741824,1073741824) 1

盡管在稀疏矩陣中進行索引以更改單個元素的成本可忽略不計,但該成本在循環環境下會增加,而且在大型矩陣中該操作可能會使執行速度變得很慢。因此,在需要更改大量稀疏矩陣元素的情況下,最好使用向量化方法而不要使用循環方法來執行該操作。例如,考慮稀疏單位矩陣:

n = 10000;

A = 4*speye(n);以循環方式更改 A 的元素慢于類似的向量化運算:

tic

A(1:n-1,n) = -1;

A(n,1:n-1) = -1;

toc

Elapsed time is 0.003344 seconds.

tic

for k = 1:n-1

C(k,n) = -1;

C(n,k) = -1;

end

toc

Elapsed time is 0.448069 seconds.由于 MATLAB 以壓縮稀疏列格式存儲稀疏矩陣,因此,在循環的每個遍歷期間,它都需要移動 A 中的多個條目。

如果為稀疏矩陣預分配內存,然后以類似的逐個元素的方式填充,會使對稀疏數組進行索引產生大量開銷:

S1 = spalloc(1000,1000,100000);

tic;

for n = 1:100000

i = ceil(1000*rand(1,1));

j = ceil(1000*rand(1,1));

S1(i,j) = rand(1,1);

end

toc

Elapsed time is 2.577527 seconds.

構建索引和值向量則無需為稀疏數組進行索引,因此這種方法的速度快得多:

i = ceil(1000*rand(100000,1));

j = ceil(1000*rand(100000,1));

v = zeros(size(i));

for n = 1:100000

v(n) = rand(1,1);

end

tic;

S2 = sparse(i,j,v,1000,1000);

toc

Elapsed time is 0.017676 seconds.

因此,最好使用構造函數(例如 sparse 或 spdiags 函數)一次構造所有稀疏矩陣。

例如,假定需要稀疏形式的坐標矩陣 C:

C=(4000?10400?10040?101010141?14)

使用 sparse 函數,以及行下標、列下標和值組成的三聯對組,直接構造該五列矩陣:

i = [1 5 2 5 3 5 4 5 1 2 3 4 5]';

j = [1 1 2 2 3 3 4 4 5 5 5 5 5]';

s = [4 1 4 1 4 1 4 1 -1 -1 -1 -1 4]';

C = sparse(i,j,s)

C =

(1,1) 4

(5,1) 1

(2,2) 4

(5,2) 1

(3,3) 4

(5,3) 1

(4,4) 4

(5,4) 1

(1,5) -1

(2,5) -1

(3,5) -1

(4,5) -1

(5,5) 4輸出中值的順序反映了底層的按列存儲。有關 MATLAB 如何存儲稀疏矩陣的詳細信息,請參閱 John R. Gilbert、Cleve Moler 和 Robert Schreiber 合著的 Sparse Matrices In Matlab:Design and Implementation, (SIAM Journal on Matrix Analysis and Applications, 13:1, 333–356 (1992))。

總結

以上是生活随笔為你收集整理的初始化稀疏矩阵 matlab,访问稀疏矩阵- MATLAB Simulink- MathWorks 中国的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。