How to save data from for loop into cell without rewriting?

Dear all,
I have this code:
A ={5,2};
c = cell(size(A))
v = 0:0.1:1
idx = 1;
for j = 0:0.5:1
v(idx) = j;
['x-' num2str(j) '.^2+ (y- 0.5) .^2<0.1^2, ''x,' 'y,' 'z'];
select_fcn = inline('(x-j).^2+(y-0.5).^2<0.1^2','x','y','z');
img_2.elem_data = 1 + elem_select(img_2.fwd_model, select_fcn);
idx = idx + 1;
figure
show_fem(img_2);
vh = fwd_solve(img_1);
vi = fwd_solve(img_2);
img_3 = inv_solve (imdl,vh,vi);
figure
show_fem(img_3);
c{k,1}=j;
c{k,2} = idx
end
I would like to save data (j and idx) to cell, but without rewriting. Like in my case in Comand Window:
c =
[] []
[] []
[] []
[] []
[4] [0.5000]
c =
[] []
[] []
[] []
[] []
[4] [1]
Why didn´t fill whole cell array? Why was filled only one line and still be rewritten?
I have no idea.
Thank you for any ideas.

3 Comments

This is my mistake...K has no value. I just wanted to make sure, that data (j and idx) wrote down the first and second columns. But I don´t know how to do it.
Note that you should not use i of j as your loop variables, as these are the names of the inbuilt imaginary unit .

Sign in to comment.

 Accepted Answer

You increment ‘idx’ by 1 in each iteration, so I would add one line here to define ‘k’:
k = idx;
c{k,1}=j;
c{k,2} = idx;
That should solve your problem.

4 Comments

Thank you, this solution really solve my problem.
But I have another problem - all of iteration steps are saved in one image. I would like to display function
select_fcn = inline('(x-j).^2+(y-0.5).^2<0.1^2','x','y','z');
with varying argument (j) after each iteration step to display the appropriate images.
Thank you.
My pleasure!
I do not understand what you want to do with your inline function. (There is no ‘z’ in it.)
I would replace it with the anonymous function:
select_fcn = @(x,y) (x-j).^2+(y-0.5).^2<0.1^2;
I am not certain what you mean by ‘image’, either. If you want to print out this line ['x-' num2str(j) '.^2+ (y- 0.5) .^2<0.1^2, ''x,' 'y,' 'z'] at every step,
use the fprintf function:
fprintf(1, '\t\nx-%d.^2 + (y- 0.5).^2<0.1^2, x=%f, y=%f, z=%f\n', j,x,y,z);
I have no idea what you are doing or what you want, so this is simply a guess.
Thank you for your answer.
I try to explain what I mean.
I have this inline function (('(x-j).^2+(y-0.5).^2<0.1^2','x','y','z'), where j is variable (j= 0:0.5:1). So my function for example looks like (('(x-0.5).^2+(y-0.5).^2<0.1^2','x','y','z'). And I want to this function display in my figure (image = img_2) so it displays this fleck.
But in my for loop, there is something wrong, because there are all flecks in one figure (image = img_2) so it displays this
Do you have any idea?
Thank you very much for your answer.
I honestly have no idea. It would be best for you to post this as a new Question. Attach the file for the code that is producing the figure, so we can experiment with it.

Sign in to comment.

More Answers (0)

Asked:

on 23 Jan 2015

Commented:

on 28 Jan 2015

Community Treasure Hunt

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

Start Hunting!