作者jatj ()
看板MATLAB
標題Re: [討論] 如何在N列2行的矩陣中的"中間列"加一列?
時間Sun Feb 9 13:28:23 2014
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
1F:推 Willful1:感謝回覆,但AA顯示的結果都是NaN;請問可以做成函數 02/09 14:34
2F:→ Willful1:形式,像是AA=B(m,mx,my)這樣嗎?? 謝謝 02/09 14:35
3F:推 Willful1:不好意思,後來修改一下後就可以了,感謝j大提點 02/09 14:42
4F:→ Willful1:function siz(m,mx,my) 02/09 14:42
5F:→ Willful1:A=[1,2;3,4;7,8]; %此行一定要在此輸入 02/09 14:43
6F:→ Willful1:Siz = size(A); 02/09 14:43
7F:→ Willful1:AA = nan(Siz(1)+1, Siz(2)); 02/09 14:44
8F:→ Willful1:AA(1:m-1, :)= A(1:m-1, :); 02/09 14:44
9F:→ Willful1:AA(m, :) = [mx, my];AA(m+1:end, :) = A(m:end, :) 02/09 14:45
10F:→ Willful1:end 謝謝j大幫忙 02/09 14:46
11F:→ jatj:no problem 02/09 15:09
12F:推 profyang:這種我都習慣直接B=[A(1:m-1,:);[mx,my];A(m:end,:)] 耶 02/09 16:53
13F:→ profyang:請問這樣是會在矩陣比較大的時候比j大你這樣先宣告它的 02/09 16:54
14F:→ profyang:size還慢嗎?@@ 02/09 16:54
15F:推 profyang:另外W大你想寫成函數應該是要把A當input然後AA當output吧 02/09 17:01
16F:→ profyang:那第一行應該改成function [AA]=siz(A,m,mx,my)這樣吧 02/09 17:02
17F:→ profyang:然後A則是要在function外面去定義 02/09 17:02
18F:推 Willful1:這也是奇怪之處,A在函數外做好定義後,函數卻讀不到A 02/09 17:40
19F:推 profyang:因為你沒把A放進input裡面阿@@ 要像我上面那樣 02/09 18:24
20F:推 Willful1:XDD" 對耶,不好意思沒注意到... 感謝p大唷 :) 02/09 18:57
21F:→ jatj:p這樣應該也一樣的速度 只是又更簡單了點 02/10 09:34
22F:推 profyang:了解 因為我是好像有看過有的case先宣告他size會比較好 02/10 12:32
23F:→ jatj:如果矩陣大我會先宣告空間 不過一行的話應該就不用(不確定) 02/10 12:53