05稀疏矩阵.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
05稀疏矩阵

5-5 本章指令彙整 spconvert(C) 將一個 m×3 的矩陣 C,轉換成稀疏矩陣,其中: 第一直行代表列索引 第二直行代表行索引 第三直行則是非零的元素值 nnz(C) 傳回稀疏矩陣 C 的非零元素個數 nonzeros(C) 傳回稀疏矩陣 C 的所有非零元素形成的行向量 nzmax(C) 傳回稀疏矩陣 C 的目前可容納非零元素個數的最大值,當nnz nzmax 時,MATLAB 會動態調增配置記憶體給 nzmax,以儲存新增的非零元素 spy(C) 觀看稀疏矩陣 C 的非零元素分佈情況 gplot(A, xy, -o); 畫出無向圖(Undirected Graph) treeplot(nodes) 畫出樹狀圖 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MATLAB 程式設計進階篇:稀疏矩陣 MATLAB 程式設計進階篇 稀疏矩陣 張智星 (Roger Jang) jang@ /jang 清大資工系 多媒體檢索實驗室 5-1 稀疏矩陣的建立 根據元素的值,MATLAB 的矩陣可分為兩種 : 完全矩陣(Full Matrix) 每一個元素都存成 double 的資料型態,佔用 8 個 Byte 一個 m×n 的完全矩陣,所佔用的記憶體空間是 8×m×n 個 Byte 稀疏矩陣(Sparse Matrix) 大部分的元素都是 0 只須儲存「非零元素的位置」及其「元素值」 優點 節省記憶體儲存空間 節省某一些不必要的運算 稀疏矩陣範例-1(I) sparse 指令可將一個完全矩陣轉換成稀疏矩陣 範例5-1:sparse01.m S = (1,1) 2 (3,2) 4 (2,4) 1 可看出,S 是一個稀疏矩陣,MATLAB 只儲存其各個非零元素的位置(即其二維下標 (1,1)、(3,2)、(2,4))和元素值(2、4、1) clear all; % 清除所有的變數 A = [2 0 0 0; 0 0 0 1; 0 4 0 0]; % 完全矩陣 S = sparse(A) % 將完全矩陣 A 轉換成稀疏矩陣 S 稀疏矩陣範例-1(II) 比較矩陣 A 和 S 所佔用的記憶體大小 : whos Name Size Bytes Class Attributes A 3x4 96 double S 3x4 88 double sparse 看出稀疏矩陣 S 佔用記憶體的位元組數目(88 Bytes)比 矩陣A(佔用 96 Bytes)還要小。 稀疏矩陣範例-2(I) 使用 sparse 指令來直接產生稀疏矩陣 S = sparse(i, j, s, m, n); i 是列索引 j 是行索引 s 是非零元素所形成的向量 m 是 s 的列維度 n 是 s 的行維度 i、j、s 都是長度相同的向量 s(k) 的二維下標即是 i(k)及 j(k) 稀疏矩陣範例-2(II) S = sparse([1 3 2], [1 2 4], [2 4 1], 3, 4) S = (1,1) 2 (3,2) 4 (2,4) 1 也可以在 sparse 指令加上第六種輸入變數,代表最多可以容納的非零元素個素,使得您可以後續再加入非零元素,而不必改變整個稀疏矩陣的結構 稀疏矩陣範例-3(I) 指令 spdiags,可由對角線元素來建構一個稀疏矩陣 S = spdiags(D, p, m, n) D 是每一個直行代表矩陣的對角線向量 p 代表對角線的位置(0 代表主對角線,-1 代表向下位移一單位的次對角線,1 代表向上位移一單位的次對角線 ) m 代表矩陣的列維度 n 代表矩陣的行維度 稀疏矩陣範例-3(II) 範例5-2:sparse02.m S =

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档