Logical Indexing one vector using a second vector

7 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

Andrei Bobrov
Andrei Bobrov il 6 Giu 2017
Vectors = bcxfun(@eq,Trial_Index(:),TrialNumbers(:).');
  2 Commenti
Dritan Nikolla
Dritan Nikolla il 6 Giu 2017
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 il 6 Giu 2017
You are amazing :), it works, there is a spelling error. it should be:
Vectors = bsxfun(@eq,Trial_Index(:),TrialNumbers(:).');

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Shifting and Sorting Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by