Is this a valid expression?
    4 views (last 30 days)
  
       Show older comments
    
Hi 
offsets = [32    48    64    80    96   112];
[X,Y,Z] = ndgrid([-1, 0, 1]);
offsetArray = [Z(:), Y(:), X(:)];
offsetArray(sum( offsetArray == [0, 0, 0], 2 ) == 3, :) = [];
I'm wondering whether below is a valid expression since I see a red tilde warning sign below the left bracket after the transpose sign in below
tmpOffsets = repmat( offsets(:), [1, size( offsetArray, 1 )] )'(:);
And the error message says
  tmpOffsets = repmat( offsets(:), [1, size( offsetArray, 1 )] )'(:);
Error: Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for mismatched delimiters.
What could possibly went wrong?
0 Comments
Accepted Answer
  Rik
      
      
 on 8 Jan 2020
        You can't index the output of the transpose function like that. You can either do it explicitly in multiple steps, or use the function syntax:
%option 1:
tmpOffsets = repmat( offsets(:), [1, size( offsetArray, 1 )] );
tmpOffsets = tmpOffsets';
tmpOffsets = tmpOffsets(:);
%option 2:
tmpOffsets= reshape(permute(repmat( offsets(:), [1, size( offsetArray, 1 )] ),[2 1]),[],1);
I would go for option 1, because it is much easier to see what is happening.
1 Comment
  Guillaume
      
      
 on 8 Jan 2020
				Note: for the record, option 3 is simpler and even easier to see what is happening:
tmpOffsets = repelem(offsets(:), size(offsetArray, 1));
should be marginally faster as well.
More Answers (1)
  Guillaume
      
      
 on 8 Jan 2020
        
      Edited: Guillaume
      
      
 on 8 Jan 2020
  
      As matlab tells you is not valid, you can't have (:) on the output of a function. Since (:) is simple a reshape, 
tmpOffsets = reshape(repmat( offsets(:), [1, size( offsetArray, 1 )] )', [], 1);
would work.
edit: on the other hand, the above is simply:
tmpOffsets = repelem(offsets(:), size(offsetArray, 1));
See Also
Categories
				Find more on Matrix Indexing in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!