任何人都可以帮助我解决我遇到的问题。我有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
答案 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
的大小硬编码到可能需要明天使用的脚本中。