MATLAB Answers

Converting output from 'find' into a logical

4 views (last 30 days)
This is probably really trivial, but I can't seem to find the right command. I have the output from a find command (a 1700x1 double) with values like [9788;9790;9955...etc]
I want to create a logical 22879 entries long, with 'true' at the locations listed from the find command. i.e. the first entry in the logical will be at an index of 9788, the next at 9790 etc. All other entries in the logical should be '0'.
Help is much appreciated.


Sign in to comment.

Accepted Answer

James Tursa
James Tursa on 8 Jan 2020
Edited: James Tursa on 8 Jan 2020
x = the result of the find
y = false(22879,1);
y(x) = true;
But it may be better to create y with a direct logical expression instead of using the find( ) function. What does your expression using the find( ) function look like?

  1 Comment

Jessica Hiscocks
Jessica Hiscocks on 9 Jan 2020
Thank you, this is exactly what I needed!
This is actually the last step of a multi stage process.
  1. Start with wholeDataset
  2. Create a subset (onePhaseDataset) including only one phase (i.e.crystallographic geometry), and get output from the corresponding 'find' command (find1)
  3. Process the subset through a command (the mtex angle/orientation function) which will only work when the input is a single phase, to generate the finalDataset and also get the output of the corresponding find command (find2).
  4. Use compare1=find1(find2) such that the resulting index values are those referencing positions in the original wholeDataset, but including only those values that were part of finalDataset.
  5. Use your provided answer to generate a logical I can pass back to my application that will let me convert (in one operation) wholeDataset to finalDataset without having to call any of the other variables or functions involved in the calculations.

Sign in to comment.

More Answers (1)

KSSV on 8 Jan 2020
Read about ind2vec. By the way you can straightaway logical, there is no need to use find.

  1 Comment

Jessica Hiscocks
Jessica Hiscocks on 9 Jan 2020
Unfortunately, I don't have the deep learning toolbox, so this approach is not an option. I actually can't use a logical instead, because one of the functions I'm using to filter the data will return an error when invalid data is passed to it. I'm using a two step process; first remove the data that will cause the error, then determine the final subset, then generate a logical that would do the process in one step.

Sign in to comment.




Community Treasure Hunt

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

Start Hunting!