Matlab MCMV代码中的下标赋值维度不匹配

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=

下面的代码给了我一个错误:

下标赋值维度不匹配

==>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=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的大小,并确保它们具有相同顺序的相同值。如果没有,那么您可以查看不同的代码,并使用这些信息来确定如何修改代码,使其保持一致。