MATLAB Answers

0

Is there a way to index a variable to a certain position in the array

Asked by Ruijie Shao on 23 Oct 2018
Latest activity Commented on by Fangjun Jiang on 23 Oct 2018
I have some code that looks like this:
if n==1
for i=1:size(ob,1)
rt(i,:,:)=radon(squeeze(ob(i,:,:)),ra);
end
elseif n==2
for i=1:size(ob,2)
rt(i,:,:)=radon(squeeze(ob(:,i,:)),ra);
end
elseif n==3
for i=1:size(ob,3)
rt(i,:,:)=radon(squeeze(ob(:,:,i)),ra);
end
end
Is there a way to get the i variable to the nth position of the ob matrix so that I don't have to write an if statement for each n?

  1 Comment

Sign in to comment.

2 Answers

Answer by Fangjun Jiang on 23 Oct 2018
 Accepted Answer

Depending on the value of n, you want to loop through the different dimension of matrix.
I think you can utilize the function shiftdim() to pre-process you matrix and then do the same loop, something like
shiftdim(ob,n)

  0 Comments

Sign in to comment.


Answer by Jose Sanchez on 23 Oct 2018

This should work:
n=3; % or set n=1 or n=2
tmp = permute(ob, [setdiff(1:3,n) n]);
for i=1:size(tmp,3)
rt(i,:,:) = radon(tmp(:,:,i),ra);
end

  1 Comment

+1, this approach should work too.

Sign in to comment.