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

답변 (1개)

Image Analyst
Image Analyst 2016년 4월 25일

0 개 추천

sorted_z = sort(z, 'descend');
secondMin = sorted_z(2);

댓글 수: 2

thanks but i want to return the matrix in index 2 in the sorted_z
how can i do this
i try this code but its did not work
sorted_z = sort(z, 'ascend')
secondMin = sorted_z(2)
[z2min , mindx] = secondMin
Smin2 = S(:, :, mindx);
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

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기

태그

질문:

2016년 4월 25일

댓글:

2016년 4월 26일

Community Treasure Hunt

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

Start Hunting!

Translated by