即使大小正确,也会出现矩阵大小错误

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 的大小硬编码到明天可能需要使用的脚本中。