2013-12-08 23 views
1

我正在开发一个MatLab程序,它计算数字的权力,将它们加在一起,然后查看是否有第一组数字(功率数字)等于任何添加数字的权力。我想检查此为第一阵列中的每个值,但是,我得到这样的输出:每个m如何检查一个数组中的任何变量是否在另一个数组中

m = 
     1 
    128 
    2187 
    16384 
    78125 
    279936 
    823543 
2097152 
4782969 
10000000 

,这是一个简单的for循环数组的只是结果。所以当我去检查m是否在数组中时,它在数组中检查是[1, 128,2187,16384,78125...],答案是否定的。我怎样才能得到它评估每个单个条目,比如:

Array n is [1,128,2187,16384] 
for m = n 
m = 1 
Is m in array? No 
m = 128 
Is m in array? No 
m = 2187 
Is m in array? Yes 
m = 16384 
Is m in array? No 
end 

我的代码如下:

C = []; 
D = []; 
E = []; 
F = []; 
numbers1 = []; 
numbers2 = []; 

numbers = 10; 
powers = 10; 

for i = 1:numbers 
    for j = 3:powers 
     C = [C;i^j]; 
    end 
    C = transpose(C); 
    D = [D;C]; 
    C = []; 
end 

[~,b] = unique(D(:,1)); % indices to unique values in first column of D 
D(b,:);     % values at these rows 

for i = D 
    for a = D 
     E = [E;i+a]; 
    end 
    E = transpose(E); 
    F = [F;E]; 
    E = []; 
end 

[~,b] = unique(F(:,1)); % indices to unique values in first column of F 
F(b,:);     % values at these rows 

for m = D % this is the for loop mentioned above 
     m 
end 
+0

你能更清楚地说明您的问题?而你的代码不能直接运行:'???未定义的函数或变量'number'。' –

+0

@LuisMendo我试图更好地解释它,并且让代码可运行(忘记取出该行)。 – hichris123

+0

而不是使用for循环,函数'find'可以是更好的主意否? – Vuwox

回答

2

实例载体:

>> m = [1 3 5 9]; 
n = [5 2 1 4 8]; 
  1. 要检查是否每一个矢量m的元素在n,使用ismember

    >>ismember(m,n) 
    ans = 
        1  0  1  0 
    
  2. 要得到的值,而不是指数:上m使用逻辑索引:

    >> m(ismember(m,n)) 
    ans = 
        1  5 
    

    或直接使用intersect

    >> intersect(m,n) 
    ans = 
        1  5 
    
+0

完美!有什么方法可以检查答案是否是1(真),然后确定是什么数字? – hichris123

+0

@ hichris123尝试'find(ismember(m,n))'。那是你要的吗? –

+0

是的,但是我怎样才能找到两个向量中的数字? – hichris123

相关问题