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

时间:2014-11-04 01:23:48

标签: matlab size reshape

第一个代码:

kk8 = (kk1(:,:) .* (reshape((kk2(c,:,:)),12,6) ));
kk8(isnan(kk8))=0;

size(kk8)返回

ans =

    12     6


第二个代码:

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

我在这里做一些作弊,看看会发生什么 - 我认为它会是一样的,但现在size(kk8)返回

ans =

    1     60

1 个答案:

答案 0 :(得分:1)

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

kk8=kk1;
kk8(isnan(kk1))=0;

在你的第二个例子中,你正在做类似

的事情
kk8(isnan(kk1))=0;

我认为以前没有定义kk8。

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