Tham khảo tài liệu it - matlab software (phần 2) part 9, công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
IT - Matlab Software (Phần 2) part 9Phụ lục-Lệnh và hàm 224tæí khaïc khäng, hoàûc chè âënh, caïc pháön tæí âàûttrãn p âæåìng cheïo B laì ma tráûn min(m,n) haìng vaì p cäüt, thæång âáöyâuí (nhæng khäng cáön thiãút), coï caïc cäüt laì caïcâæåìng cheïo cuía A. d laì vectå âäü daìi p coï caïcthaình pháön nguyãn chè âënh caïc âæåìng cheïo trong A Mäüt caïch thä så, A, B vaì d quan hãû båíi for k = 1:p B(:,k) = diag(A,d(k)) end Bäún thao taïc khaïc nhau, phán biãût theo säú âäúisäú nháûp, coï thãø duìng våïi SPDIAGS laì: Láúy ra táút caí caïc âæåìng cheïo khaïc khäng: [B,d] = spdiags(A); Láúy ra âæåìng cheïo chè âënh: B = spdiags(A,d); Thay caïc âæåìng cheïo chè âënh: A = spdiags(B,d,A); Taûo mäüt ma tráûn thæa tæì caïc âæåìng cheïo cuíanoï: A = spdiags(B,d,m,n); Quan hãû chênh xaïc trong A, B vaì d laì: if m >= n for k = 1:p for j = max(1,1+d(k)):min(n,m+d(k)) B(j,k) = A(j-d(k),j); end end if m < n for k = 1:p for i = max(1,1-d(k)):min(m,n-d(k)) B(i,k) = A(i,i+d(k)); end end endVaìi pháön tæí cuía B, æïng våïi caïc vë trê “ b ãnngoaìi ” A, khäng xaïc âënh âæåüc bàòng caïc voìng làûpnaìy. Chuïng khäng âæåüc tham chiãúu khi B laì âäúisäú nháûp vaì âæåüc dàût giaï trë 0 khi B laì âäúi säúxuáút.Vê duû, caïc lãûnh naìy phaït sinh mäüt biãøu hiãûn 3âæåìng cheïo thæa cuía pheïp vi phán cáúp 2 cäø âiãøntaûi n âiãøm e = ones(n,1); A = spdiags([e -2*e e], -1:1, n, n)Lãûnh naìy âäøi ma tráûn A thaình ma tráûn kiãøm traWilkinson (xem WILKINSON(n)) A = spdiags(abs(-(n-1)/2:(n-1)/2),0,A)Cuäúi cuìng, lãûnh naìy sæía laûi 3 âæåìng cheïo B = spdiags(A)Vê duû thæï hai khäng vuäng A = [ 11 0 13 0 0 22 0 24 0 0 33 0 41 0 0 44Phan Thanh Tao - 2004Phụ lục-Lệnh và hàm 225 0 52 0 0 0 0 63 0 0 0 0 74] coï m = 7, n = 4 vaì p = 3Lãûnh [B,d] = spdiags(A) cho d = [-3 0 2] vaì B = [ 41 11 0 52 22 0 63 33 13 74 44 24 ] Ngæåüc laûi, våïi B vaì d nhæ trãn thç biãøu thæïcspdiags(B,d,7,4) cho laûi A vãö giaï trë gäúcChuyãøn ma tráûn âáöy âuí thaình ma tráûn thæaSPARSEXáy dæûng ma tráûn thæa tæì caïc säú khaïc 0 vaì caïcchè säú S = SPARSE(...) laì haìm gàõn liãön phaït sinh caïcma tráûn thuäüc låïp læu træî thæa cuía MATLAB. Haìmnaìy coï thãø goüi våïi 1, 2, 3, 5 hoàûc 6 âäúi säú S = SPARSE(X) chuyãøn ma tráûn thæa hoàûc âáöy âuísang daûng thæa bàòng caïch boí âi caïc pháön tæí 0 S = SPARSE(i,j,s,m,n,nzmax) duìng caïc doìng cuía[i,j,s] âãø phaït sinh mäüt ma tráûn thæa cåî mxn våïikhäng gian phán bäú cho nzmax pháön tæí khaïc 0. Haivectå chè säú nguyãn, i vaì j, vaì vectå thæûc hoàûcphæïc, s, táút caí cuìng âäü daìi, nnz, laì säú pháöntæí khaïc 0 trong ma tráûn thæa kãút quaí. Coï mäüt säúcaïch goüi âån giaín 6 âäúi säú naìy S = SPARSE(i,j,s,m,n) duìng nzmax = length(s). S = SPARSE(i,j,s) duìng m = max(i) vaì n = max(j). S = SPARSE(m,n) caïch tàõt cuíaSPARSE([],[],[],m,n,0). Lãûnh naìy phaït sinh ma tráûnthæa cå baín cåî mxn gäöm táút caí caïc säú 0. Âäúisäú s vaì mäüt trong hai âäúi säú i vaì j coï thãø laìâaûi læåüng vä hæåïng, trong træåìng håüp naìy chuïngâæåüc bung ra âãø caí 3 âäúi säú âáöu coï cuìng âäüdaìi. Vê duû, trêch ra vaì sau âoï raïp laûi mäüt matráûn thæa: [i,j,s] = find(S); [m,n] = size(S); S = sparse(i,j,s,m,n);Båíi váûy, nhæ caïc lãûnh naìy, nãúu doìng vaì cäütcuäúi cuìng coï caïc pháön tæí khaïc 0: [i,j,s] = find(S); S = sparse(i,j,s); Táút caí caïc thao taïc gàõn liãön cuía MATLAB vãösäú hoüc, logic vaì vãö chè säú âãöu coï thãø aïp duûngcho caïc ma tráûn thæa, hoàûc cho caïc ma tráûn væìathæa væìa âáöy âuí. Caïc thao taïc trãn ma tráûn thæatraí vãö ma tráûn thæa, âáöy âuí traí vãö âáöy âuí.Trong háöu hãút caïc træåìng håüp thç caïc thao taïctrãn caïc ma tráûn væìa thæa væìa âáöy âuí traí vãöâáöy âuí. Ngoaûi træì træåìng håüp coï âæa vaìo, kãútPhan Thanh Tao - 2004Phụ lục-Lệnh và hàm 226quaí cuía caïc thao taïc träün thæa våïi âáöy âuí coïcáúu truïc thæa, nghéa laì A .* S êt nháút thæa nhæ S .Mäüt säú thao taïc, nhæ S >= 0, phaït sinh caïc matráûn thæa låïn (Big Sparse, hay BS ) -- ma tráûnthuäüc täø chæïc læu træî thæa nhæng êt pháön tæí 0FULLChuyãøn ma tráûn thæa sang låïp læu træî âáöy âuí A = FULL(X) laì haìm gàõn liãön chuyãøn mäüt ma tráûnthæa sang cå cáúu læu træî âáöy âuí vaì cho ra mäüt matráûn âáöy âuí khäng thay âäøiFINDTçm caïc chè säú cuía caïc pháön tæí khaïc 0 I = FIND(X) traí vãö chè säú cuía caïc pháön tæíkhaïc 0 cuía vectå XVê duû, I = FIND(A>100) , traí vãö caïc chè säú cuíacaïc pháön tæí låìn hån 100 cuía A. Xem RELOP [I,J] = FIND(X) traí vãö caïc chè säú doìng vaì cäütcuía caïc pháön tæí khaïc 0 trong ma tráûn X. Lãûnhnaìy thæåìng duìng våïi caïc ma tráûn thæa [I,J,V] = FIND(X) cuîng traí vãö mäüt vectå cäütgäöm caïc pháön tæí khaïc 0 cuía X. Læu yï ràòngfind(X) vaì find(X~=0) seî cho ra cuìng I vaì J, nhænghaìm sau cho V våïi táút caí caïc säú 1SPCONVERTSPCONVERT Chuyãøn daûng thæa måí räüng S = SPCONVERT(D) chuyãøn mäüt maíng (nnz hoàûcnnz+1)x (3 hoàûc 4) våïi caïc doìng chæïa [i,j,s] hoàûc[i,j,real(s(i,j)),imag(s(i,j))] sang ma tráûn thæatæång æïng. Mäüt doìng báút kyì trong D coï daûng [m n0] hoàûc [m n 0 0] coï thãø duìng âãø chè âiûnh kêchthæåïc cuía S. Nãúu D âaî thæa räöi thç khäng chuyãøn,vç váûy SPCONVERT coï thãø duìng sau khi D âæåüc naûptæì tãûp MAT hoàûc tãûp ASCIIPhan Thanh Tao - 2004Phụ lục-Lệnh v ...