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

8 ビュー (過去 30 日間)
周平
周平 2023 年 7 月 15 日
初学者なため初歩的な質問になりますが、よろしくお願いします。
以下のような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];

回答 (1 件)

交感神経優位なあかべぇ
交感神経優位なあかべぇ 2023 年 7 月 16 日
編集済み: 交感神経優位なあかべぇ 2023 年 7 月 16 日
変数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

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!