Getting the minimum value from a row vector

Hi, I am calculating a min value in a row vector one after the other. There are two repetitions in the row vector. I want to pick 3 and 6 twice. The way i am doing is like this but it doesn't take care of the repetition in the vector
a=[1,2,3,3,4,5,6,6,7,8,9,10];
min_value=0;
for i=1:length(a)
min_value=min(a(a>min_value));
end

5 Comments

What exactly is the result you are looking for? Your code currently gives an error when I paste it into Matlab so I can't even see what your current code is giving.
Well, i'm sorry as i don't know that why it is giving you an error but it working fine with me. If you see in the vector, 3 and 6 is repeated. I want that the min function somehow should return the 3 and 6 twice.
@Aftab Ahmed Khan: your code:
a = [1,2,3,3,4,5,6,6,7,8,9,10];
min_value = 0;
for k = 1:length(a)
min_value = min(a(a>min_value));
end
Give this error:
Error using >
Matrix dimensions must agree.
Error in Untitled1 (line 6)
min_value = min(a(a>min_value));
because on twelfth iteration min_value is empty and so the comparison tries to compare an empty array with a 1x12 array. Thus the error.
"I want that the min function somehow should return the 3 and 6 twice."
Your code does not "return" or store any values, so it is not clear what you want.
Well, i am running it with a breakpoint and didn't run it up to the twelfth iteration and didn't notice the error. Thanx. On the third iteration, min_value is 3 and on the fourth iteration it picks the value 4, skipping the 2nd 3 value. Similarly for the value 6.
I have made the necessary changes to the code.
a=[1,2,3,3,4,5,6,6,7,8,9,10];
min_value=0;
for i=1:length(a)
if isempty(min_value)
break;
end
min_value=min(a(a>min_value))
end

Sign in to comment.

 Accepted Answer

Stephen23
Stephen23 on 26 Jul 2016
Edited: Stephen23 on 26 Jul 2016
Why make it complicated ?
>> a = [1,2,3,3,4,5,6,6,7,8,9,10];
>> b = sort(a); % guarantees the order
>> for k = 1:numel(b), disp(b(k)), end

More Answers (1)

a = [1,2,3,3,4,5,6,6,7,8,9,10];
f = find([1,diff(a),1]);
x = f(2:end)-f(1:end-1);
c = mat2cell(a,1,x);
where
>> c{:}
ans =
1
ans =
2
ans =
3 3
ans =
4
ans =
5
ans =
6 6
ans =
7
ans =
8
ans =
9
ans =
10

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!