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

4 visualizaciones (últimos 30 días)
周平
周平 el 15 de Jul. de 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];

Respuestas (1)

交感神経優位なあかべぇ
交感神経優位なあかべぇ el 16 de Jul. de 2023
Editada: 交感神経優位なあかべぇ el 16 de Jul. de 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

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Productos


Versión

R2022a

Community Treasure Hunt

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

Start Hunting!