2016-08-29 229 views
0

给定两个列向量,我需要在第一次迭代中比较向量a的每个元素与向量b的第一个元素并返回一个逻辑数组。然后向量b的第二个元素与向量a的每个元素并返回一个逻辑数组。逻辑数组的数量等于向量b中元素的数量。Octave比较两个数组

a=1:10; 
b=[5 6 7]; 
for j=1:length(b), 
for i=1:10, 
    c=b(j)==a(i); 
    end; 
end;  

例如: 的内环需要在第一次迭代之后返回[0 0 0 0 1 0 0 0 0 0]

回答

2

尝试:

a = 1:10 
b = [5 6 7] 
output = zeros(3,10); 
for i = 1:length(b) 
    output(i,:) = (a == b(:,i)) % b(:, i) meas using index get the value 
end 


output = 

    0 0 0 0 1 0 0 0 0 0 
    0 0 0 0 0 1 0 0 0 0 
    0 0 0 0 0 0 1 0 0 0 
+2

如果这是所期望的输出他可以做'output = a == b''而没有任何循环 – Andy

+0

是的,这是一个更好的方式来做到这一点,我从你身上学到了一些新东西。 :-) –