Dot indexing not supported

10 views (last 30 days)
Curious Mind
Curious Mind on 10 Nov 2019
Answered: Walter Roberson on 10 Nov 2019
Hi,
I have the code:
x.y{2} = b
x is a 10by200 matrix and y is a row vector (1by200) and b is also a row vector (1by200) which has already been extracted.i want want to extract the columns or variables in y from which b corresponds to. when I run the code above Matlab says ‘dot indexing not supported for variables of this type’
Any ideas?
Thank you!
  1 Comment
JESUS DAVID ARIZA ROYETH
JESUS DAVID ARIZA ROYETH on 10 Nov 2019
Can you save your workspace using
save('variables')
and attach the variables.mat file here please?

Sign in to comment.

Answers (1)

Walter Roberson
Walter Roberson on 10 Nov 2019
You would only use
x.y
in one of the following cases:
  1. x is a struct scalar that has a field named y . In this case, x.y would be a copy of the field y from the single x entry.
  2. x is a struct array that has a field named y. In this case, x.y would be a "comma separated list" of all of the fields y from the x entries, in linear indexing order of x . This is not uncommon when extracting information from regionprops() results for example.
  3. x is an object or object array with property named y
  4. x is an object or object array with method named y
The only two cases in which assigning x.y{2} = b would be legal would be:
  1. x is a scalar struct that has a field named y that is a cell array and the second entry of that cell array is being assigned to. However, the syntax does not work if x is a non-scalar struct array
  2. x is a scalar object that has a property named y that is a cell array and the second entry of the property is being assigned to. However, the syntax does not work if x is a non-scalar object
You have indicated that x is a 10 by 200 matrix. Both of the matrix possibilities (x is struct array, x is object array) would generate comma-separated lists when you accessed the field or property y of the array, and using {} indexing of a comma separated list that has more than one entry is not valid.
I cannot tell what you are trying to do. I speculate that you must might possibly want something like
any( x(:,y) == b, 1)
but even that seems unlikely.

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!