how to alter this code ???

1 次查看(过去 30 天)
Firas Al-Kharabsheh
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
sorted_z = sort(z, 'descend');
secondMin = sorted_z(2);
  2 个评论
Firas Al-Kharabsheh
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);
Image Analyst
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 CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by