索引矩阵Matlab

索引矩阵Matlab,matlab,matrix,Matlab,Matrix,我试着计算两个矩阵,一个是400*2,另一个是20*20。第一个包含400个点的x和y坐标,第二个是另外400个点,x是第二个(i,i)和y是(i,k)。i和k都是20个数字计数器。我试图计算这两个矩阵点之间的距离,这将得到400*400个矩阵。我使用的代码是 for i=1:20 for j=1:400 for k=1:20 L(j,)=sqrt((C(j,1)-M(i,i))^2+(C(j,2)-M(k,i))^2); end

我试着计算两个矩阵,一个是400*2,另一个是20*20。第一个包含400个点的x和y坐标,第二个是另外400个点,x是第二个(i,i)和y是(i,k)。i和k都是20个数字计数器。我试图计算这两个矩阵点之间的距离,这将得到400*400个矩阵。我使用的代码是

for i=1:20
    for j=1:400
        for k=1:20
        L(j,)=sqrt((C(j,1)-M(i,i))^2+(C(j,2)-M(k,i))^2);
        end
    end
end
C是第一个矩阵,M是第二个矩阵。现在我知道我让它听起来有点难,但问题是我找不到一个计数器给L(j,)那部分。如果你们有任何想法,请告诉我

编辑:首先,我们认为有两个点向量。X是-0.95:0.1:0.95,y是一样的。M向量是所有的x都与Y配对,所以它会成为20*20矩阵或400*2,但是我不能让它像400*2那样工作,所以我选择了20*20。矩阵对我来说有点难,所以我对M的索引显示了这一点。如果你有更好的方法来配对它们,我也会很感激

我的矩阵是这样的

-0.95 -0.85 -0.75...
-0.95 -0.85 -0.75 ... 
.
.
.

他们的顺序有关系吗?我想不会,只要你知道顺序是什么。我会用这个:

for i=1:20
    for j=1:400
        for k=1:20
            L(j,(i-1)*20+k) = sqrt((C(j,1)-M(i,i))^2+(C(j,2)-M(k,i))^2);
        end
    end
end

他们的顺序有关系吗?我想不会,只要你知道顺序是什么。我会用这个:

for i=1:20
    for j=1:400
        for k=1:20
            L(j,(i-1)*20+k) = sqrt((C(j,1)-M(i,i))^2+(C(j,2)-M(k,i))^2);
        end
    end
end

上面的代码应该非常慢。。。使用大量for循环不是“matlab风格” 我要做的是:

Mdiag=repmat(diag(M)',20,1);
L=pdist2(C,[Mdiag(:) M(:)]);
第一行提取M的对角项并重复它们

之后,
[Mdiag(:)M(:)]
是第二组点的标准形式


pdist2是一个计算所有成对距离的函数。

上面的代码应该非常慢。。。使用大量for循环不是“matlab风格” 我要做的是:

Mdiag=repmat(diag(M)',20,1);
L=pdist2(C,[Mdiag(:) M(:)]);
第一行提取M的对角项并重复它们

之后,
[Mdiag(:)M(:)]
是第二组点的标准形式


pdist2是一个计算所有成对距离的函数。

我认为,如果你包括矩阵某些部分的实际示例,这个问题会更容易理解。你对矩阵M的描述不清楚。请澄清它的条目代表什么。我认为如果你包括矩阵某些部分的实际示例,这个问题会更容易理解。你对矩阵M的描述不清楚。请澄清其条目所代表的内容。