Matlab 版 (精华区)
发信人: hahn (有奇~~Not Over But another Start...), 信区: Matlab
标 题: [合集] 求助:::Index exceeds matrix dimensions.
发信站: 哈工大紫丁香 (Fri Jan 19 12:50:49 2007), 站内
────────────────────────────────────────
maykk (may) 于 (Sun Aug 20 15:43:48 2006) 说道:
运行程序的时候总是显示这样的提示:
?? Index exceeds matrix dimensions.
Error in ==> D:\matlab\work\QACS.m
On line 18 ==> distance(i,j)=sqrt((data(i,2)-data(j,2))^2+(data(i,3)-
data(j,3))^2);
相关的程序如下:
data=fopen('tsp51.m','r');
tempstr=fscanf(data,'%s');
NC=51;
for i=1:NC % 计算各城市间的距离
for j=1:NC
distance(i,j)=sqrt((data(i,2)-data(j,2))^2+(data(i,3)-data(j,3))^2);
end
end
其中tsp51。m文件中是一个3*51的矩阵
谢谢~
────────────────────────────────────────
maykk (may) 于 (Sun Aug 20 15:56:12 2006) 说道:
【 在 maykk (may) 的大作中提到: 】
: 运行程序的时候总是显示这样的提示:
: ?? Index exceeds matrix dimensions.
: Error in ==> D:\matlab\work\QACS.m
: On line 18 ==> distance(i,j)=sqrt((data(i,2)-data(j,2))^2+(data(i..
: data(j,3))^2);
: 相关的程序如下:
: data=fopen('tsp51.m','r');
: tempstr=fscanf(data,'%s');
: ...................
那位高手帮忙指点一下萨! 谢谢
────────────────────────────────────────
bage (八哥*醍醐灌水@紫丁香) 于 (Sun Aug 20 16:00:33 2006) 说道:
【 在 maykk (may) 的大作中提到: 】
: 标 题: 求助:::Index exceeds matrix dimensions.
: 发信站: BBS 哈工大紫丁香站 (Sun Aug 20 15:43:48 2006)
:
: 运行程序的时候总是显示这样的提示:
:
: ?? Index exceeds matrix dimensions.
:
: Error in ==> D:\matlab\work\QACS.m
: On line 18 ==> distance(i,j)=sqrt((data(i,2)-data(j,2))^2+(data(i,3)-
: data(j,3))^2);
:
: 相关的程序如下:
: data=fopen('tsp51.m','r');
: tempstr=fscanf(data,'%s');
:
: NC=51;
: for i=1:NC % 计算各城市间的距离
~~~~~~~~
: for j=1:NC
: distance(i,j)=sqrt((data(i,2)-data(j,2))^2+(data(i,3)-data(j,3))^2);
: end
: end
: 其中tsp51。m文件中是一个3*51的矩阵
~~~~~~~~~~~~~~~~~~i从1到51,而data只是一个3*51的矩阵,当然会超界了
:
: 谢谢~
: --
:
: ※ 来源:·哈工大紫丁香 http://bbs.hit.edu.cn·[FROM: 219.217.235.95]
────────────────────────────────────────
maykk (may) 于 (Sun Aug 20 16:45:12 2006) 说道:
【 在 bage (八哥*醍醐灌水@紫丁香) 的大作中提到: 】
: ~~~~~~~~
: ~~~~~~~~~~~~~~~~~~i从1到51,而data只是一个3*51的矩阵,当然会..
不好意思,刚才说错了 ,使一个51*3的矩阵。
distance(i,j)=sqrt((data(i,2)-data(j,2))^2+(data(i,3)-data(j,3))^2);
────────────────────────────────────────
bage (八哥*醍醐灌水@紫丁香) 于 (Sun Aug 20 16:52:26 2006) 说道:
道理一样,是51*3的矩阵,那么应该是j=1:3而不是j=1:NC
【 在 maykk (may) 的大作中提到: 】
: 不好意思,刚才说错了 ,使一个51*3的矩阵。
: distance(i,j)=sqrt((data(i,2)-data(j,2))^2+(data(i,3)-data(j,3))^2);
────────────────────────────────────────
koppie (处理好自己,才能处理信号) 于 (Sun Aug 20 16:53:42 2006) 说道:
你看看data的维数,可能是153*1的或者1*153
也就是说把第二列接到第一列的末尾,第3接第2
一般这么读,都需要reshape
【 在 maykk (may) 的大作中提到: 】
: 运行程序的时候总是显示这样的提示:
: ?? Index exceeds matrix dimensions.
: Error in ==> D:\matlab\work\QACS.m
: On line 18 ==> distance(i,j)=sqrt((data(i,2)-data(j,2))^2+(data(i,3)-
: data(j,3))^2);
: 相关的程序如下:
: data=fopen('tsp51.m','r');
: tempstr=fscanf(data,'%s');
: NC=51;
: for i=1:NC % 计算各城市间的距离
: for j=1:NC
: distance(i,j)=sqrt((data(i,2)-data(j,2))^2+(data(i,3)-data(j,3))^2);
: end
: end
: 其中tsp51。m文件中是一个3*51的矩阵
: 谢谢~
────────────────────────────────────────
koppie (处理好自己,才能处理信号) 于 (Sun Aug 20 16:54:15 2006) 说道:
distance和data不是一个矩阵啊
【 在 bage (八哥*醍醐灌水@紫丁香) 的大作中提到: 】
: 道理一样,是51*3的矩阵,那么应该是j=1:3而不是j=1:NC
────────────────────────────────────────
maykk (may) 于 (Sun Aug 20 17:06:29 2006) 说道:
【 在 koppie (处理好自己,才能处理信号) 的大作中提到: 】
: distance和data不是一个矩阵啊
distance是51*51的矩阵,data中是数据坐标,就是计算两点间的距离,然后存到distanc
e中!
────────────────────────────────────────
bage (八哥*醍醐灌水@紫丁香) 于 (Sun Aug 20 17:08:47 2006) 说道:
看错了,不过你在command里看看distance和data的维数
【 在 koppie (处理好自己,才能处理信号) 的大作中提到: 】
: distance和data不是一个矩阵啊
────────────────────────────────────────
maykk (may) 于 (Sun Aug 20 17:09:08 2006) 说道:
【 在 koppie (处理好自己,才能处理信号) 的大作中提到: 】
: 你看看data的维数,可能是153*1的或者1*153
: 也就是说把第二列接到第一列的末尾,第3接第2
: 一般这么读,都需要reshape
data在存为*。mat文件前已经化为51*3的数组了。
干才我把程序改了一下 ,如下:
A=reshape(data,3,51);
x=A(2,:);
y=A(3,:);
for i=1:NC
for j=1:NC
distance(i,j)=sqrt((x(i)-x(j))*(x(i)-x(j))+(y(i)-y(j))*(y(i)-y(j)))
end
end
显示的错误信息如下::
?? Error using ==> reshape
To RESHAPE the number of elements must not change.
Error in ==> D:\matlab\work\QACS.m
On line 22 ==> A=reshape(data,3,51);
────────────────────────────────────────
bage (八哥*醍醐灌水@紫丁香) 于 (Sun Aug 20 17:11:27 2006) 说道:
hehe....data的元素没有153个吧?你看看data的维数
【 在 maykk (may) 的大作中提到: 】
: data在存为*。mat文件前已经化为51*3的数组了。
: 干才我把程序改了一下 ,如下:
: A=reshape(data,3,51);
: ...................
────────────────────────────────────────
maykk (may) 于 (Sun Aug 20 17:11:39 2006) 说道:
【 在 bage (八哥*醍醐灌水@紫丁香) 的大作中提到: 】
: 看错了,不过你在command里看看distance和data的维数
呵呵 你提醒得好对阿 !矩阵不对,转成了0*0的。怎么会这样了,再帮我看看好吗??
file = fopen('eil51.tsp');
text = fscanf(file, '%s\n');
text;
data = fscanf(file, '%d', [3, 51]);
data = data';
save('datasap51.mat', 'data');
fclose(file);
────────────────────────────────────────
maykk (may) 于 (Sun Aug 20 17:13:24 2006) 说道:
【 在 bage (八哥*醍醐灌水@紫丁香) 的大作中提到: 】
: hehe....data的元素没有153个吧?你看看data的维数
TSP文件内容如下::
NAME : eil51
COMMENT : 51-city problem (Christofides/Eilon)
TYPE : TSP
DIMENSION : 51
EDGE_WEIGHT_TYPE : EUC_2D
NODE_COORD_SECTION
1 37 52
2 49 49
3 52 64
4 20 26
5 40 30
6 21 47
7 17 63
8 31 62
9 52 33
10 51 21
11 42 41
12 31 32
13 5 25
14 12 42
15 36 16
16 52 41
17 27 23
18 17 33
19 13 13
20 57 58
21 62 42
22 42 57
23 16 57
24 8 52
25 7 38
26 27 68
27 30 48
28 43 67
29 58 48
30 58 27
31 37 69
32 38 46
33 46 10
34 61 33
35 62 63
36 63 69
37 32 22
38 45 35
39 59 15
40 5 6
41 10 17
42 21 10
43 5 64
44 30 15
45 39 10
46 32 39
47 25 32
48 25 55
49 48 28
50 56 37
51 30 40
EOF
────────────────────────────────────────
bage (八哥*醍醐灌水@紫丁香) 于 (Sun Aug 20 17:13:45 2006) 说道:
【 在 maykk (may) 的大作中提到: 】
: 标 题: Re: 求助:::Index exceeds matrix dimensions.
: 发信站: BBS 哈工大紫丁香站 (Sun Aug 20 17:11:39 2006)
:
:
: 【 在 bage (八哥*醍醐灌水@紫丁香) 的大作中提到: 】
: : 看错了,不过你在command里看看distance和data的维数
:
:
: 呵呵 你提醒得好对阿 !矩阵不对,转成了0*0的。怎么会这样了,再帮我看看好吗??
:
: file = fopen('eil51.tsp');
: text = fscanf(file, '%s\n');
: text;
: data = fscanf(file, '%d', [3, 51]);
: data = data';
~~~~~~~~~你这个时候看看data的维数,我觉得是存成字符串了
: save('datasap51.mat', 'data');
: fclose(file);
:
:
:
: --
:
: ※ 来源:·哈工大紫丁香 http://bbs.hit.edu.cn·[FROM: 219.217.235.95]
────────────────────────────────────────
maykk (may) 于 (Sun Aug 20 17:19:51 2006) 说道:
【 在 bage (八哥*醍醐灌水@紫丁香) 的大作中提到: 】
: ~~~~~~~~~你这个时候看看data的维数,我觉得是存成字符串了
没成字符串还是数组 ,但还是0*0的
────────────────────────────────────────
bage (八哥*醍醐灌水@紫丁香) 于 (Sun Aug 20 17:26:56 2006) 说道:
我觉得还是你从文件读数据的时候出错了
实在不行你就直接把数据存成数组吧,手动处理
【 在 maykk (may) 的大作中提到: 】
: 没成字符串还是数组 ,但还是0*0的
────────────────────────────────────────
maykk (may) 于 (Sun Aug 20 17:31:58 2006) 说道:
【 在 bage (八哥*醍醐灌水@紫丁香) 的大作中提到: 】
: 我觉得还是你从文件读数据的时候出错了
: 实在不行你就直接把数据存成数组吧,手动处理
哦,我再看看吧!谢谢!
────────────────────────────────────────
feixueliam (烟笼寒水) 于 (Sun Aug 20 21:20:37 2006) 说道:
好像矩阵存进去后都是按列读取的。
【 在 maykk (may) 的大作中提到: 】
: 哦,我再看看吧!谢谢!
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.503毫秒