MATLABで行列の計算を行うために行数の小さい方に合わせるために行を削除する方法について
MATLABで行列の計算を行うために、
行数の小さい方に合わせるために行を削除しようとしています。
バージョン: R2019a
具体的には以下のような出力を得たいです。
しかしながら現在のプログラムでは出力が異なっており、修正方法がわかりません。
入力A,B、出力ans
A =
1 2 3 4 5 6 7
8 9 10 11 12 13 14
B =
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
ans =
0 0 0 0 0 0 0
0 0 0 0 0 0 0
現在のプログラム
A = [1,2,3,4,5,6,7; 8,9,10,11,12,13,14]
B = [1,2,3,4,5,6,7; 8,9,10,11,12,13,14; 15,16,17,18,19,20,21; 22,23,24,25,26,27,28]
[Am, An] = size(A);
[Bm, Bn] = size(B);
if Am > Bm
diff = Am - Bm;
delete_point = Am - diff;
A(delete_point) = [];
elseif Am < Bm
diff = Bm - Am; %2
delete_point = Bm - diff;
%delete_point以降の行を全て削除
A(delete_point, :) = [];
end
ans = A-B
実行結果
>> sample
A =
1 2 3 4 5 6 7
8 9 10 11 12 13 14
B =
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
ans =
0 0 0 0 0 0 0
-7 -7 -7 -7 -7 -7 -7
-14 -14 -14 -14 -14 -14 -14
-21 -21 -21 -21 -21 -21 -21