Matlab 有人能告诉我为什么这两个代码给出不同的答案吗

Matlab 有人能告诉我为什么这两个代码给出不同的答案吗,matlab,size,reshape,Matlab,Size,Reshape,第一个代码: kk8 = (kk1(:,:) .* (reshape((kk2(c,:,:)),12,6) )); kk8(isnan(kk8))=0; 其中size(kk8)返回 ans = 12 6 ans = 1 60 第二个代码: size( kk8(isnan((kk1(:,:) .* (reshape((kk2(c,:,:)),12,6) ))))=0 ); 我在这里做一些作弊来看看会发生什么——我原以为会是一样的,但现在size(kk8

第一个代码:

kk8 = (kk1(:,:) .* (reshape((kk2(c,:,:)),12,6) ));
kk8(isnan(kk8))=0;
其中
size(kk8)
返回

ans =

    12     6
ans =

    1     60

第二个代码:

size( kk8(isnan((kk1(:,:) .* (reshape((kk2(c,:,:)),12,6) ))))=0 );
我在这里做一些作弊来看看会发生什么——我原以为会是一样的,但现在
size(kk8)
返回

ans =

    12     6
ans =

    1     60

在第一个示例中,您正在执行以下操作(就数组大小而言):

kk8=kk1;
kk8(isnan(kk1))=0;
在你的第二个例子中,你做的是

kk8(isnan(kk1))=0;
我假设kk8之前没有定义


在第一个示例中,创建与
kk1
大小相同的数组
kk8
,然后修改一些元素。在第二个示例中,创建
kk8
作为向量零,对应于
kk1
中的
NaN
的数量。这就是为什么它们会有不同的大小,因为它们的创建方式不同。

我应该如何做才能将其放在一行中?@user2604811将其保留为两行!我不确定你会如何在一行中做到这一点,也没有真正的理由这么做。