即使大小正确,也会出现矩阵大小错误
Getting a matrix size error even though the size is correct
任何人都可以帮助我解决我遇到的问题。我有 4 列变量 x、y、u 和 v。
我正在使用以下代码将这些结果映射到等高线图上
crossflow = xlsread(filename, 'sheet3');
x = crossflow(2:1559,1);
y = crossflow(2:1559,2);
u = crossflow(2:1559,3);
v = crossflow(2:1559,4);
quiver(x,y,u,v)
但我收到错误
Index exceeds matrix dimensions.
Error in VorticityCode066D (line 38)
x = crossflow(2:1559,1);
我的问题是 x、y、u 和 v 都是 38x41 矩阵,大小正确。为什么会出现此错误?问候,杰尔
来自评论的whos
:
Name Size Bytes Class
U 38x41 12464 double
V 38x41 12464 double
cav 38x41 12464 double
crossflow 1558x50 623200 double
y 38x41 12464 double
z 38x41 12464 double
答案在错误消息中。在线
x = crossflow(2:1559,1);
您收到错误 "index exceeds matrix dimensions" 因为您的索引(您要求的是第 1559 行)超出了您矩阵 (crossflow
).
请记住,Matlab 中的索引是从 1 开始的(与大多数编程语言不同),因此 1558 行矩阵的第一行和最后一行的索引分别为 1 和 1558。此外,像 2:1559
这样的范围在两端 都包含 (与 Python 不同,如果您熟悉的话)。
作为旁注,您可以使用令牌 end
作为索引。如果你 真的 意思是 "take the whole first column except the first row" 你可以说 crossflow(2:end, 1)
。这节省了您将今天 crossflow
的大小硬编码到明天可能需要使用的脚本中。
任何人都可以帮助我解决我遇到的问题。我有 4 列变量 x、y、u 和 v。
我正在使用以下代码将这些结果映射到等高线图上
crossflow = xlsread(filename, 'sheet3');
x = crossflow(2:1559,1);
y = crossflow(2:1559,2);
u = crossflow(2:1559,3);
v = crossflow(2:1559,4);
quiver(x,y,u,v)
但我收到错误
Index exceeds matrix dimensions.
Error in VorticityCode066D (line 38)
x = crossflow(2:1559,1);
我的问题是 x、y、u 和 v 都是 38x41 矩阵,大小正确。为什么会出现此错误?问候,杰尔
来自评论的whos
:
Name Size Bytes Class
U 38x41 12464 double
V 38x41 12464 double
cav 38x41 12464 double
crossflow 1558x50 623200 double
y 38x41 12464 double
z 38x41 12464 double
答案在错误消息中。在线
x = crossflow(2:1559,1);
您收到错误 "index exceeds matrix dimensions" 因为您的索引(您要求的是第 1559 行)超出了您矩阵 (crossflow
).
请记住,Matlab 中的索引是从 1 开始的(与大多数编程语言不同),因此 1558 行矩阵的第一行和最后一行的索引分别为 1 和 1558。此外,像 2:1559
这样的范围在两端 都包含 (与 Python 不同,如果您熟悉的话)。
作为旁注,您可以使用令牌 end
作为索引。如果你 真的 意思是 "take the whole first column except the first row" 你可以说 crossflow(2:end, 1)
。这节省了您将今天 crossflow
的大小硬编码到明天可能需要使用的脚本中。