更新时间:2023-11-29 11:05:46
例如向量:
>> M = [1 3 5 9]。
N = [5 2 1 4 8]。
要检查是否向量 M
的每个元素是 N
,使用的 ismember
:
>> ismember(M,N)
ANS =
1 0 1 0
要获取值,而不是指数:上使用逻辑索引 M
:
>>米(ismember(M,N))
ANS =
1 5
,或直接使用 相交
:
>>相交(M,N)
ANS =
1 5
I'm developing a program with MatLab that calculates powers of numbers, adds them together, and then sees if any of the first set of numbers (numbers to powers) equals any of the added numbers to powers. I'm trying to check this for each value in the first array, however, I am getting an output like this:
m =
1
128
2187
16384
78125
279936
823543
2097152
4782969
10000000
for each m
value, which is just the result of a simple for
loop of the array. So when I go to check if m
is in the array, it checks is [1, 128,2187,16384,78125...]
in the array, and the answer is no. How can I get it to evaluate each individual entry, like this:
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
My code is below:
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
Example vectors:
>> m = [1 3 5 9];
n = [5 2 1 4 8];
To check if each element of vector m
is in n
, use ismember
:
>>ismember(m,n)
ans =
1 0 1 0
To get the values, not the indices: use logical indexing on m
:
>> m(ismember(m,n))
ans =
1 5
or directly use intersect
:
>> intersect(m,n)
ans =
1 5