Wrong way to index: Index exceeds matrix dimensions

Hi,
I'm trying to use indices to expand a vector but I keep getting an error message and I don't understand why. In particular, what I'm trying to do works in an example such as
x=[1 2 3]';
y=[.1 .5 .3]';
z=[1 1 2 2 3];
yz=y(z);
Here I have two vectors, x and z that have the same values for the indices. I want to expand the vector y to have the same dimensions as z but the values of z must be repeated according to how the index is repeated.
Now, in my application this is not working. I have two vectors X and Z, X of dimensions 2270x1 and Z of dimensions 446723x1 that contains the same indices as X but a lot of times (and each number is repeated a different number of times). To check that the indices are the same I used isequal(unique(X),unique(Z)) and the output was 1.
Finally, I have a vector Y of dimensions 2270x1 that plays the role of y in the example above. When doing YZ=Y(Z) I get ??? Index exceeds matrix dimensions.
Any ideas what is going on?
Thanks,

 채택된 답변

ChristianW
ChristianW 2013년 3월 20일

0 개 추천

max(Z) is greater then 2270?

댓글 수: 3

ChristianW
ChristianW 2013년 3월 21일
편집: ChristianW 2013년 3월 21일
check length(unique(Z))
This might work:
[~,~,zi] = unique(z)
yz=y(zi);
This works, thanks!
Hideto Koizumi
Hideto Koizumi 2018년 8월 28일
편집: Hideto Koizumi 2018년 8월 28일
I think this method could cut off the largest element of z, if z is something like z = [1 1 2 4] and y=[.1 .5 .3 .7]';

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Azzi Abdelmalek
Azzi Abdelmalek 2013년 3월 20일
편집: Azzi Abdelmalek 2013년 3월 20일

0 개 추천

Check this
size(Y)
max(Z)
What did you get?
Fernando
Fernando 2013년 3월 20일

0 개 추천

Thanks. Yes, the max of Z is greater than the number of elements in Y, which generates the message. Is there any way to overcome this? Following on the example, if this was
x=[1 2 5]';
y=[.1 .5 .3]';
z=[1 1 2 2 5];
yz=y(z);
I get the message because max(z)> size(y). How can I get yz to be yz=[.1 .1 .5 .5 .3]';?
Thanks,

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

질문:

2013년 3월 20일

편집:

2018년 8월 28일

Community Treasure Hunt

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

Start Hunting!

Translated by