# Error: Subscripted assignment dimension mismatch

1 view (last 30 days)
A on 30 Aug 2011
Hello,
I have a 48x64 matrix, let's call it dummy, and I have located all of the non-zero values in dummy(:).
returned as num:
num=find(dummy);
num=
783
863
864
900
901
902
1145
1146
1183
1184
1221
1222
1759
1760
1761
1797
1798
1799
1836
1915
1916
1917
1953
1954
1955
then I want to find the actual value contained at these positions in dummy(:)
values=zeros(size(num));
for i=1:length(num)
values(i,1)=dummy(num(i));
end
values=sort(values);
values=
3.0351
3.1727
3.3852
3.4728
3.4728
3.4728
3.6539
3.6539
3.8040
4.3020
4.6747
4.9834
5.1444
5.2296
5.2495
5.2708
5.2708
5.3560
5.4412
5.6222
5.7286
5.7499
5.7499
5.7499
6.1225
I now need to find the values in the original 48x64 dummy matrix which are equal to these values.
Right now, I am using:
points=zeros(length(num),2);
for i=1:length(values)
[points(i,1),points(i,2)]=find(z(:,:,pos)==values(i));
end
HOWEVER, occasionally there are repeated values, and therefore more than one [x,y] coordinate found
When this occurs, I get the error "Subscripted assignment dimension mismatch."
I have been struggling with this for some time, as it appears I cannot do:
x=find(z(:,:,pos)==values(i));
[points(i,1),points(i,2)]=X(1,1);
This error is " Indexing cannot yield multiple results."
As well, this is not ideal because I would like to have the coordinates from all values; if the above were to work it would only give me the coordinates for the first of the repeated values.
Any input is greatly appreciate, thank you in advance for your replies!

Fangjun Jiang on 30 Aug 2011
Can you try [I,J,V]=find(dummy). It gives position index and value at once.
A on 30 Aug 2011
It's perfect! Thank you so much!