Index chunks of cell to make block diagonal matrix.

4 vues (au cours des 30 derniers jours)
Mohammed Kagalwala
Mohammed Kagalwala le 5 Déc 2019
Hi,
I currently have a cell structure where each element is a 6x6 matrix.
Capture1.PNG
I have an array l = [0 1 2 0 4], based on this array I have to extract chunks of the cell structure and develop a block diagonal matrix. The mapping from l to the cell chunks is as follows,
There are 2 zeros in l in position 1 and 4. These are the columns I want. The rows I want are 1:3, (in column 1) and 4:5 (in column 4). The 1:3 is obtained from the fact that next 0 in l after that in position 1 appears in position 4, so the range is 1:3. Similarily 4:5 is obtained from the fact that there is no 0 after the one in position 4, so you choose rows 4:end.
Thus I ultimately want A = diag(T{1,1},T{2,1},T{3,1},T{4,4},T{5,4})
I can get the right columns by simply creating a logical index from l == 0, however I'm stuck on obtaining the rows, without a for loop implementation.
Note: The vector l provided is only an example, the no. of zeros is not fixed.
I tried my best to explain my logic. I really hope someone can help.

Réponses (0)

Catégories

En savoir plus sur Operating on Diagonal Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by