Output shape inconsistent when indexing with empty vector
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
I am working with code that maintains three lists -- two exist in the same matrix and one is separate:
twoLists = 1:9;
twoLists = [twoLists' 2*twoLists'];
singleList = (1:9)';
I then index into these lists as follows:
entries = [1;2];
first = twoLists(entries, 1);
second = twoLists(entries, 2);
xponding = singleList(entries);
This is all well and good until 'entries' is empty and both sets of lists only contain one entry:
twoLists = [1 1];
singleList = [2];
entries = ones(1, 0);
first = twoLists(entries, 1);
second = twoLists(entries, 2);
xponding = singleList(entries);
In this case, the shape of 'xponding' doesn't match 'first' and 'second'. I could fix the problem by indexing into singleList like:
singleList(entries, 1);
but I was wondering if there was a better way to solve the problem / elminate it entirely, since it would be a pain to index like this for the whole function.
1 comentario
Respuestas (1)
Nikhil Sonavane
el 2 de Ag. de 2019
You are encountering the undesired output because of the following line in the code-
entries = ones(1, 0);
Indexing matrices in MATLAB should always be done using positive integers. I suggest you to always start indexing all the matrices from 1 and not zero as you tried it in your first example. In your second example you are creating a matrix with dimensions 1x0 and later assessing another matrix using the previous matrix which has undefined dimensions.
1 comentario
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!