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

时间:2015-01-09 16:26:38

标签: matlab matrix size

任何人都可以帮助我解决我遇到的问题。我有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

1 个答案:

答案 0 :(得分:0)

答案在错误消息中。在线

x = crossflow(2:1559,1);

您收到错误"索引超出矩阵维度"因为您的索引(您要求第1559行等)超出了矩阵(whos)的维度(根据crossflow输出可用的1558行)。

请记住,Matlab中的索引是基于1的(与大多数编程语言不同),因此1558行矩阵的第一行和最后一行分别具有索引1和1558。此外,像2:1559这样的范围在两端都是包含(与Python不同,以防您熟悉它)。

作为旁注,您可以使用令牌end作为索引。如果你真的意味着"取整个第一列除了第一行"你可以说crossflow(2:end, 1)。这可以节省您将今天crossflow的大小硬编码到可能需要明天使用的脚本中。