Matlab MCMV代码中的下标赋值维度不匹配
下面的代码给了我一个错误: 下标赋值维度不匹配 ==>lookmcvmt在18时出错Matlab MCMV代码中的下标赋值维度不匹配,matlab,Matlab,下面的代码给了我一个错误: 下标赋值维度不匹配 ==>lookmcvmt在18时出错 M(:,:,j,i) = mcmvOUT2((k+1):(k+Nz), i:Nt:Nr); 请帮忙解决 load MCMVout1xzy mcmvOUT2 = MCMVout1xzy; whos [Nr2 Nr] = size(mcmvOUT2); Ny = 51; Nx = 51; Nz = 41; Nt = 10; M = zeros(Nz,Nx,Ny,Nt); for j=1:Ny for i=
M(:,:,j,i) = mcmvOUT2((k+1):(k+Nz), i:Nt:Nr);
请帮忙解决
load MCMVout1xzy
mcmvOUT2 = MCMVout1xzy;
whos
[Nr2 Nr] = size(mcmvOUT2);
Ny = 51;
Nx = 51;
Nz = 41;
Nt = 10;
M = zeros(Nz,Nx,Ny,Nt);
for j=1:Ny
for i=1:Nt
k = Nz*(j-1);
M(:,:,j,i) = mcmvOUT2((k+1):(k+Nz), i:Nt:Nr);
end
end
错误“下标赋值维度不匹配”表示您试图将一块值赋值到错误大小的空间中 这个实体
mcmvOUT2((k+1):(k+Nz), i:Nt:Nr);
表示二维值的矩阵。其大小由(k+1)指定的两个范围定义:(k+Nz)
和i:Nt:Nr
-您可以通过键入来检查其大小
size(mcmvOUT2((k+1):(k+Nz), i:Nt:Nr))
您尝试将其放入的空间必须完全相同。指定的范围的大小
M(:,:,j,i)
由预先分配数组的zero
调用的Nz
和Nx
参数定义
我们无法测试此问题,因为未提供包含您的数据的mcmvourt1xzy
文件,但您可以通过使用size
命令并确保所有维度匹配来自行解决此问题
因为matlab使用列式索引,而且我们很多人都习惯于笛卡尔坐标系的行式范例,所以正确获取索引的顺序可能会令人困惑——这是许多此类错误的根源(对我来说)
检查事项:您的维度
Nz
等是正确的,Nz
等的顺序是正确的。zero
调用中的变量是正确的。这就是我得到的。。这些数据有用吗?名称大小字节类属性MCMVout1xzy 2091x51 853128双mcmvOUT2 2091x51 853128双K>>大小(mcmvOUT2((K+1):(K+Nz),i:Nt:Nr))ans=41 6您要做的是比较RHS和LHS的大小,并确保它们具有相同顺序的相同值。如果没有,那么您可以查看不同的代码,并使用这些信息来确定如何修改代码,使其保持一致。