MATLAB:将不同数组的值存储到另一个数组时出现零

MATLAB: Zeros appearing when storing values from different arrays to another array

我有两个双数组,如下所示:

K>> var_conx

var_conx =
     1
     3
   127
   129
   216
   217
   252
   253
   302
   303
   342
   343

K>> var_cony

var_cony =
     2
   126
   128
   216
   217
   252
   253
   302
   303
   342
   343

我的任务很简单,我只需要将两个数组的所有公共值存储在另一个双精度数组中,我们称另一个数组为"common_convar"。 具体来说,对于上面的两个数组,我只想存储值 216,217,252,253,302,303,342,343。对于其他值,我不关心,也不希望存储它们或其他任何东西。

我写了下面的代码:

for i=1:length(var_conx)
    for j=1:length(var_cony)
        if var_conx(i)==var_cony(j)
           common_convar(i,:)=[var_conx(i)]; 
        end
    end
end

我在这里遇到的问题是数组common_convar也在开头存储了一些零:

K>> common_convar

common_convar =

     0
     0
     0
     0
   216
   217
   252
   253
   302
   303
   342
   343

如何去掉零并只存储两个数组 var_conx 和 var_cony 所需的公共值?

提前感谢您的宝贵时间。

首先,您可以使用 Matlab set intersect 函数找到两个数组共有的元素,而无需进行嵌套循环:

common_values= intersect(var_conx,var_cony);

然后你可以通过逻辑索引找到公共数组的非零元素:

common_values = common_values(common_values > 0);