我试图找到等于某个矩阵的所有可能的总和组合。假设我有:
a = [1 0 0; 0 1 0 ; 0 0 1];
b = [5 0 0; 0 5 0 ; 0 0 5];
我从矩阵开始a
,想通过使用和的矩阵加法来生成b
矩阵,例如:r1
r2
r1 = [1 0 0; 0 1 0 ; 0 0 1];
r2 = [2 0 0; 0 2 0 ; 0 0 2];
我希望它显示所有组合的矩阵、加法和结果矩阵,我的意思是:4r1 (1+1+1+1+1), 1r1+1r2+1r1 (1+1+2+1) , 1r2+1r1+1r1 (1+2+1+1) 和 2r2 (1+2+2)。
这是我到目前为止得到的,但我无法让它通过所有组合:
function v = test_r2(a, b)
if isequal(a,b)==1
v = [];
disp('same')
return
end
v= test_r3(a,b);
end
function v = test_r3(a, b)`
r1 = [1 0 0; 0 1 0 ; 0 0 1];
r2 = [2 0 0; 0 2 0 ; 0 0 2];
r=[{r1} {r2}];
if isequal(a,b)==1
v = b;
else % recursive call
for k = 1:numel(r)
for i = nchoosek(1:numel(r),k)'
r_matrix = r{1,i};
if(isequal(a + r_matrix,b) ==1)
disp([a(:)', r_matrix(:)'])
end
end
end
基本上我希望它通过单元格数组并找到这些添加的所有可能组合,这些组合将允许我从 matrixa
到 matrix b
。有什么帮助吗?