MATLAB: Indexing Based On Cell Array

cell arraysindexing

randvar=cell(50,1);
for h=1:50
randvar{h}=zeros(10,4);
randvar{h}(:,1)=randi(10,10,1);
randvar{h}(:,2)=randi(5,10,1);
randvar{h}(:,3)=randi(10,10,1);
randvar{h}(:,4)=randi(17,10,1);
end
for counter=1:15
for h=1:50
a{h}=0;
for i=1:10
for j=1:10-i
if randvar{h}(i,1) ~= randvar{h}(i+j,1)
if randvar{h}(i,2)==randvar{h}(i+j,2)
if randvar{h}(i,3)==randvar{h}(i+j,3)
if randvar{h}(i,4)==randvar{h}(i+j,4)
a{h}=a{h}+10;
else
a{h}=a{h}+0;
end
end
end
end
end
end
end
end
[B, IX] = sortrows(a);
least = randvar(IX(1:10));
I don't quite understand why the IX returns 1. Shouldn't it return all the index of the cell array elements? I want to retrieve the first 10 least value for a for randvar.
P/S: My code works when I'm using cell2mat but because there're many loops, converting from cell2mat and mat2cell doesn't seem to be efficient.

Best Answer

a is an matrix of 1 row and 50 columns. And like doc sortrow states: "If A is an m-by-n matrix, then B = A(index,:)."
So, initialize a like this, and you're fine:
a = cell(50,1);