列を挿入するMatlab関数

動機

前回の調子に乗って、列を挿入する関数を作る

例えば、
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
動機に示した結果と一致した。