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

4 Ansichten (letzte 30 Tage)
周平
周平 am 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];

Antworten (1)

交感神経優位なあかべぇ
Bearbeitet: 交感神経優位なあかべぇ am 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

Kategorien

Mehr zu Instrument Control Toolbox Supported Hardware finden Sie in Help Center und File Exchange

Produkte


Version

R2022a

Community Treasure Hunt

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

Start Hunting!