Matlab 获取矩阵大小错误,即使大小正确
有人能帮我解决一个问题吗。我有4列变量x,y,u和v 我使用以下代码将这些结果映射到等高线图上Matlab 获取矩阵大小错误,即使大小正确,matlab,matrix,size,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.
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);
您得到错误“索引超过矩阵维度”,因为您的索引(您要求的是1559行和其他行)超过了矩阵的维度(根据whos
输出,1558行可用)(crossflow
)
请记住,Matlab中的索引是基于1的(与大多数编程语言不同),因此1558行矩阵的第一行和最后一行分别具有索引1和1558。此外,像2:1559
这样的范围在两端都包含在内(如果您熟悉Python,则与Python不同)
作为旁注,您可以使用标记
end
作为索引。如果你的意思是“除了第一行之外,取整个第一列”,你可以说crossflow(2:end,1)
。这可以节省您将今天的交叉流的大小硬编码到明天可能需要使用的脚本中。在调用xlsread之后,您可以显示“whos”的输出吗?以下是输出“Name size Bytes Class Attributes U 38x41 12464 double”V 38x41 12464双cav 38x41 12464双交叉流1558x50 623200双`名称大小字节类属性curlx 38x41 12464双数据1520x46 559360双图形手柄1x1 8双文件名1x122 244字符hd 1x1 8双涡度38x41 12464双x38x41 12464 double``Name Size Bytes Class Attributes y 38x41 12464 double z 38x41 12464 double`这就是为什么要在原始问题中添加这样的内容,而不是把它放在评论里。而交叉流的大小是造成问题的原因之一。