Re: [問題] 如何將矩陣依照這樣的方式放大

看板MATLAB作者 (prof)時間12年前 (2013/11/24 11:34), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《newton2009 (Life is short & u r hot)》之銘言: : 標題: [問題] 如何將矩陣依照這樣的方式放大 : 時間: Tue Nov 12 16:22:49 2013 : : 例如有個矩陣長這樣 : : A=[1 2; ... : 3 4] : : 它的size為2x2的大小 : : 現在想將它變成4x4的大小,像這樣 : : B=[1 1 2 2; ... : 1 1 2 2; ... : 3 3 4 4; ... : 3 3 4 4] : : 我的做法是 : : A=[1 2; 3 4]; : B=zeros(size(A)*2); : for j=1:2 : for k=1:2 : B(j:2:end,k:2:end)=A; : end : end : : 想問的是,有沒有更簡單的方式可以達到相同的效果 : : 感恩 0.0 : : -- : ╭───────────────────╮ : │ 我要努力, │ : │ 跳出 我的 │ 框框 : ╰───────────────────╯ : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 140.115.111.173 : → jatj:B = kron(A, ones(2)); 收工 11/12 16:27 : → newton2009:j大好神 竟然可以不用for迴圈達到相同的效果!! 11/12 16:29 : → jatj:剛好線代有學到. 能幫到忙就好囉! 11/12 16:53 特地回文感謝一下j大 今天有朋友問我一個問題跟原文有些不同: 假設他想要由一個已知矩陣C(方陣)造出一個大矩陣A A的對角上都是C矩陣 有沒有辦法不用for loop寫出來? 一開始他是找到這個: http://www.mathworks.com/help/matlab/ref/blkdiag.html 不過看來仍須用for loop 然後我就記得好像閒逛這個版的時候有看過很相似的邏輯可能可以解決 於是就一個個文往前爬終於找到這篇了! 假設我A需要N個C矩陣在它的對角上 j大提供的這個功能只需要A=kron(eye(N),C); 就可以解決這個問題了! 這個功能太神了( ′▽`)b -- 正妹也只不過是一組物質波方程的特解罷了(  ̄ c ̄)y▂ξ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.71.37

11/24 14:57, , 1F
哈哈 不需要如此客氣 有時候我也看這個版學到很多技巧
11/24 14:57, 1F

11/24 14:57, , 2F
教學相長大家都很開心阿~
11/24 14:57, 2F
文章代碼(AID): #1IaNEeRh (MATLAB)
文章代碼(AID): #1IaNEeRh (MATLAB)