動機
前回の調子に乗って、列を挿入する関数を作る
例えば、
2 2
2 2
の2列目に、1を入れ
2 1 2
2 0 2
となって欲しい。
目的
行列に挿入後、左にずれるような関数を開発する(開発は言い過ぎ?)
ソース
function [ result ] = insertCols( inMat , doMat , numCol ) % [ result ] = insertRows( inMat , doMat , numCol ) % inMat:挿入される行列 % doMat:挿入する行列 % numCol:挿入する要素番号 [ rowsDo , colsDo ] = size( doMat ); [ rowsIn , colsIn ] = size( inMat ); if rowsDo > rowsIn; error('挿入行が多すぎます');end; insMat = zeros( rowsIn , colsDo ); insMat( 1:rowsDo , 1:colsDo ) = doMat; result = cat( 2 , inMat( : , 1:numCol -1 ) , insMat , inMat( : ,numCol : rowsIn ) ); end
テストドライバ
a = ones( 2 )*2; b = ones( 1 ); c = insertCols( a , b , 2 )
実行結果
c = 2 1 2 2 0 2動機に示した結果と一致した。