Logical Indexing one vector using a second vector

7 次查看(过去 30 天)
Hi,
I am relatively new to MatLab. I have the following problem. I have a double array in my data named Trial_Index size 50478x1 I also have a myTrialNumbers double array size 154x1.
The Trial_Index array has data in the following form:
Trial_Index = [1 1 1 1 2 2 3 3 3 3 4 5 5 .... n]
The TrialNumbers has data in the following form:
TrialNumbers = [1 2 3 4 5 ....... n]
I need a way to automate the task of generating one seperate logical vector for each element of TrialNumbers where it is found in TrialIndex. So that:
Vector1 = TrialNumbers(1) == Trial_Index If TrialNumbers(1) equals 1 then the Vector1 should contain:
Vector1 = [1 1 1 1 0 0..... 0]
If TrialNumbers(2) equals 2 (the second element in TrialNumbers), then Vector2 shouod containt:
Vector2 = [0 0 0 0 1 1 0 0 ... 0].
It looks simple, I cannot find an answer to this.
Please help.

采纳的回答

Andrei Bobrov
Andrei Bobrov 2017-6-6
Vectors = bcxfun(@eq,Trial_Index(:),TrialNumbers(:).');
  2 个评论
Dritan Nikolla
Dritan Nikolla 2017-6-6
Hi Bobrov,
How does this work? I am getting a:
Undefined function or variable 'bcxfun'.
Error in mycellfind (line 47)
Vectors = bcxfun(@eq,TRIAL_INDEX(:),myTrialCodes(:).');
Dritan Nikolla
Dritan Nikolla 2017-6-6
You are amazing :), it works, there is a spelling error. it should be:
Vectors = bsxfun(@eq,Trial_Index(:),TrialNumbers(:).');

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by