我想从矩阵中获取上三角形。MATLAB 有函数tril
,triu
不幸的是它们给出了错误的三角形。我正在寻找下面的三角形,是否有它的命令或者它必须是一个循环?如果是这样,它看起来如何?
test=[1 1 1; 1 1 0; 1 0 0];
我想从矩阵中获取上三角形。MATLAB 有函数tril
,triu
不幸的是它们给出了错误的三角形。我正在寻找下面的三角形,是否有它的命令或者它必须是一个循环?如果是这样,它看起来如何?
test=[1 1 1; 1 1 0; 1 0 0];
您需要手动完成。有几种方法:
用于flipud
在应用前后垂直翻转tril
:
M = magic(3); % example matrix
result = flipud(tril(flipud(M)));
用于bsxfun
创建适当的掩码:
M = magic(3); % example matrix
result = M .* (bsxfun(@plus, (1:size(M,1)).', 1:size(M,2)) <= size(M,1)+1);
以上任何一个给出
>> M
M =
8 1 6
3 5 7
4 9 2
>> result
result =
8 1 6
3 5 0
4 0 0