[英]find out the largest element from the given row to the end
假设我有一个矩阵a和每列的给定行号列表:
>> a=magic(5)
>> a =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> b=[2 3 4 5 1]; %% Note that the elements in b is arbitrary
现在我想分别从第1
列第2:end
行, 2:end
和第2
列第3:end
行, 3:end
... ...和第5
列第1:end
行, 3:end
找到最大值,是否有不使用for循环的方法? 我尝试a(b:end,:)
但是对于每一列a(b:end,:)
它都从b(1)
开始。
将不需要的条目设置为NaN
,然后使用max
:
ind = bsxfun(@lt, (1:size(a,1)).', b); %'// logical index
a(ind) = NaN; %// set those entries to NaN
result = max(a); %// compute maximum of each column
这适用于任意b
(不一定是对角线形式)。
这是使用arrayfun的另一种可能性:
res = arrayfun(@(n) max(a(b(n):end,n)),1:numel(b))
对角线?
[m n] = size(a);
[tril(a(:,1:n-1),-1), a(:,n)]
然后
max([tril(a(:,1:n-1),-1), a(:,n)])
结果
23 18 25 2 22
result = max(a-triu(inf(size(a)),1),[],1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.