# Finding integers between two vectors

2 views (last 30 days)

Show older comments

hi

im new in the matlab world

i have 2 vectors A and B size (1xM)

i need to find all the integers betwwen corresponding Columns and store the integers in cell arry

for example:

A= 4.54 5.11 9.58 15.04

B= 1.01 3.2 5.5 16.98

i need to create cell arry X that each column contains all the integers between the numbers in A and B columns (1.01-4.54 the integers 2,3,4 3.2-5.11 the integers 4,5... )

X=

2 4 6 16

3 5 7

4 8

9

how can i do it?

thanks

##### 0 Comments

### Accepted Answer

John Doe
on 1 Sep 2013

A= [4.54 5.11 9.58 15.04];

B= [1.01 3.2 5.5 16.98];

C = sort([A; B]);

C(1,:) = ceil(C(1,:));

C(2,:) = floor(C(2,:));

temp = diff(C) + 1;

D = zeros(max(temp),size(C,2));

for ii = 1:size(C,2)

D(1:temp(ii),ii) = C(1,ii):C(2,ii);

end

##### 3 Comments

the cyclist
on 2 Sep 2013

Edited: the cyclist
on 2 Sep 2013

@david, I expect you realize this, since you accepted the answer, but this solution has two features that are different from what you specified in your question:

- It is a numeric array, not a cell array.
- It includes extra zeros.

Maybe that doesn't matter to you, but just in case another person tries to use this solution, it is good to realize.

the cyclist
on 2 Sep 2013

### More Answers (1)

the cyclist
on 1 Sep 2013

Edited: the cyclist
on 1 Sep 2013

Here is a slick one-liner:

arrayfun(@(x,y) (ceil(min([x y])):floor(max([x,y])))',A,B,'UniformOutput',false)

Here is a straightforward way with a loop:

A = [4.54 5.11 9.58 15.04];

B = [1.01 3.2 5.5 16.98];

N = length(A);

X = cell(1,length(A));

for i = 1:N

hi = floor(max([A(i) B(i)]));

lo = ceil(min([A(i) B(i)]));

X{i} = (lo:hi)';

end

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!