Asked by Mariana
on 18 Mar 2014

Hello, I can´t figure out myself what is wrong with following nested loops:

index = 0;

for i = 1 : 2 : givenValue

index = index + 1;

j = i + 1;

for k = 1 : givenValue/2

if sth_x(k) > sth_y(k)

step(k) = sth_y(k) / sth_x(k);

end

end

for id = 1 : givenValue/2

values_x{index} = mat(i, 1) : mat(j, 1);

values_y{index} = mat (i, 2) : step(id) : mat(j, 2);

end

In words, what I need is to generate two cell arrays (values_x and values_y) with one row and several columns, which contains all points (pixels - it is image analysis) between points (pixels) mat(i,1) and mat (j,1) with growing i and j. values_x are allways increased with 1, but values_y are supposed to be increased with step counted before. Problem I have is that cell array values_y is generated with step from the last iteration only. I need values_y{1,1} to be counted with step 1 and values_y{1,2} to be counted with step 2. Therefore values_x{1,1} and values_y{1,1} will be the same length.

I´m new to matlab and I know this might be simple. But I really don´t know what is wrong. I tried to change order of "for" and "if", tried to replace "id" with "k" but still nothing works.

Thank you for your advices very much.

Answer by Nitin
on 18 Mar 2014

You might need to initialize your cells first before saving to it.

a = cell(1, num);

Mariana
on 19 Mar 2014

Nitin
on 19 Mar 2014

Hopefully this will help, I am not sure what you are trying to achieve though:

index = 0;

givenValue = 10;

step = 1:5;

values_x = cell(1,10);

values_y = cell(1,10);

mat= randi(20,20,2);

for i = 1 : 2 : givenValue

index = index + 1;

j = i + 1;

for k = 1 : givenValue/2

if 2 > 1

display('So far so good')

end

for id = 1 : givenValue/2

values_x{index} = mat(i, 1) : mat(j, 1);

values_y{index} = mat (i, 2) : step(id) : mat(j, 2);

end

end

end

For example you can access the elements in the array using values_x{1}

Mariana
on 19 Mar 2014

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.