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);
我有两个双数组,如下所示:
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);