Re: [討論] 如何在N列2行的矩陣中的"中間列"加一列?

看板MATLAB作者時間11年前 (2014/02/09 13:28), 編輯推噓8(8015)
留言23則, 3人參與, 最新討論串3/3 (看更多)
Siz = size(A); AA = nan(Siz(1)+1, Siz(2)); AA(1:m-1, :)= A(1:m-1, :); AA(m, :) = [mx, my]; AA(m+1:end, :) = A(m:end, :); A = AA; ※ 引述《Willful1 (自強不息!!)》之銘言: : 延伸原po的問題 : 原本是想加入一列,使其成為第3列,使得A矩陣由三列變為四列 : 若改為想加入一列(mx,my),使其成為第m列,m = 1~4 任意一數字、(mx,my)也是變數 : 請問該如何製作這樣的變數組合呢? : 謝謝大家 : ※ 引述《candy88257 (阿泰斯)》之銘言: : : 如: : : A=[1,2;3,4;7,8]; : : 想在中間加一列變成: : : A=[1,2;3,4;5,6;7,8]; : : 請問這樣要怎麼做? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 24.21.33.212

02/09 14:34, , 1F
感謝回覆,但AA顯示的結果都是NaN;請問可以做成函數
02/09 14:34, 1F

02/09 14:35, , 2F
形式,像是AA=B(m,mx,my)這樣嗎?? 謝謝
02/09 14:35, 2F

02/09 14:42, , 3F
不好意思,後來修改一下後就可以了,感謝j大提點
02/09 14:42, 3F

02/09 14:42, , 4F
function siz(m,mx,my)
02/09 14:42, 4F

02/09 14:43, , 5F
A=[1,2;3,4;7,8]; %此行一定要在此輸入
02/09 14:43, 5F

02/09 14:43, , 6F
Siz = size(A);
02/09 14:43, 6F

02/09 14:44, , 7F
AA = nan(Siz(1)+1, Siz(2));
02/09 14:44, 7F

02/09 14:44, , 8F
AA(1:m-1, :)= A(1:m-1, :);
02/09 14:44, 8F

02/09 14:45, , 9F
AA(m, :) = [mx, my];AA(m+1:end, :) = A(m:end, :)
02/09 14:45, 9F

02/09 14:46, , 10F
end 謝謝j大幫忙
02/09 14:46, 10F

02/09 15:09, , 11F
no problem
02/09 15:09, 11F

02/09 16:53, , 12F
這種我都習慣直接B=[A(1:m-1,:);[mx,my];A(m:end,:)] 耶
02/09 16:53, 12F

02/09 16:54, , 13F
請問這樣是會在矩陣比較大的時候比j大你這樣先宣告它的
02/09 16:54, 13F

02/09 16:54, , 14F
size還慢嗎?@@
02/09 16:54, 14F

02/09 17:01, , 15F
另外W大你想寫成函數應該是要把A當input然後AA當output吧
02/09 17:01, 15F

02/09 17:02, , 16F
那第一行應該改成function [AA]=siz(A,m,mx,my)這樣吧
02/09 17:02, 16F

02/09 17:02, , 17F
然後A則是要在function外面去定義
02/09 17:02, 17F

02/09 17:40, , 18F
這也是奇怪之處,A在函數外做好定義後,函數卻讀不到A
02/09 17:40, 18F

02/09 18:24, , 19F
因為你沒把A放進input裡面阿@@ 要像我上面那樣
02/09 18:24, 19F

02/09 18:57, , 20F
XDD" 對耶,不好意思沒注意到... 感謝p大唷 :)
02/09 18:57, 20F

02/10 09:34, , 21F
p這樣應該也一樣的速度 只是又更簡單了點
02/10 09:34, 21F

02/10 12:32, , 22F
了解 因為我是好像有看過有的case先宣告他size會比較好
02/10 12:32, 22F

02/10 12:53, , 23F
如果矩陣大我會先宣告空間 不過一行的話應該就不用(不確定)
02/10 12:53, 23F
文章代碼(AID): #1Izn7vvY (MATLAB)
文章代碼(AID): #1Izn7vvY (MATLAB)