二つの行列を比べ、足りない部分を追加する方法

4 views (last 30 days)
周平
周平 on 15 Jul 2023
初学者なため初歩的な質問になりますが、よろしくお願いします。
以下のようなa,bの行列を用意します。
この行列において、1,2列目を比較します。
bはaに比べ、2行目の[3,4]の部分が抜けているので、bの2行目に[3,4]を入れるのですが、3列目は0を入れたいです。
求めたい行列としては、
1 2 0
b = 3 4 0
5 6 0
となります。
このようなプログラムを作れる方、教えていただきたいです。
よろしくお願いします。
a = [1,2,10; 3,4,10; 5,6,10];
b = [1,2,0; 5,6,0];

Answers (1)

交感神経優位なあかべぇ
Edited: 交感神経優位なあかべぇ on 16 Jul 2023
変数bに変数aの抜けているデータを挿入させるサンプルを作成しました。
% サンプルデータの作成 (bに[3,4,0]と[7,8,0]を挿入させる)
a = [1,2,10; 3,4,10; 5,6,10; 7,8,11];
b = [1,2,0; 5,6,0];
for row = 1 : size(a,1)
if row <= size(b, 1)
if ~all(a(row,[1,2]) == b(row,[1,2]))
b = [b(1:row - 1, :); [a(row,[1,2]), 0]; b(row : end, :)];
end
else
b(end + 1, :) = [a(row,[1,2]), 0];
end
end
b %結果の表示
b = 4×3
1 2 0 3 4 0 5 6 0 7 8 0
ただ、この条件をみる限り、変数bは変数aの3列目を0にしたものと同じ値にすることを意図しているように思います。
一応、変数aの3列目を0にした変数bを作成するサンプルも作成しました。
a = [1,2,10; 3,4,10; 5,6,10; 7,8,11];
b = a;
b(:,3) = 0
b = 4×3
1 2 0 3 4 0 5 6 0 7 8 0

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!