how to alter this code ???
1 次查看(过去 30 天)
显示 更早的评论
if i have A matrix like this
A = [ 1 0 1 1 1
0 0 1 0 1
0 1 0 1 1
1 1 0 O 0 ]
S = randi([0 1], [size(A), 5]); %Sk is S(:, :, k) , GENERATE 5 RANDOM MATRIX
z = squeeze(sum(sum(bsxfun(@ne, S, A), 1), 2)) %compare A to each page with bsxfun and sum in two dimensions
[zmin, minidx] = min(z) ; %find location of minimum in z
Smin = S(:, :, minidx); %and return that page
this code return the matrix which have the MIN value
how to make this code to return the second min value?? like this
z = 5 2 7 9 1
min value is 1
i want to return the 2 where is the second min value
0 个评论
回答(1 个)
Image Analyst
2016-4-25
sorted_z = sort(z, 'descend');
secondMin = sorted_z(2);
2 个评论
Image Analyst
2016-4-26
S has just ones and zeros in it while z has other integers. So you will not find the min value of z anywhere in S. Try this though:
A = [ 1 0 1 1 1
0 0 1 0 1
0 1 0 1 1
1 1 0 0 0 ]
S = randi([0 1], [size(A), 5]) %Sk is S(:, :, k) , GENERATE 5 RANDOM MATRIX
z = squeeze(sum(sum(bsxfun(@ne, S, A), 1), 2)) %compare A to each page with bsxfun and sum in two dimensions
sorted_z = sort(z, 'descend')
secondMin = sorted_z(2)
% Find location of second smallest value in z
index = find(z == secondMin)
% Smin = S(:, :, minidx) %and return that page
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!