Related vector values via cell array
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Sergio Rojas Blanco
am 12 Aug. 2023
Kommentiert: Dyuman Joshi
am 12 Aug. 2023
Hi guys, I hope someone can help me:
I have a vector. Suppose this:
A=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)'
Some values of this vector are related through a cell array, in such a way that a value of the vector is the index of a cell. I need to know if a value of the vector "a" is related to another value "b".
B={15, 12, 0, [11, 7], 9, 0, [1, 20, 21], 18, 7, 0, 16, [13, 14], 17, 4, 6};
a=2; b=7
In this case, 2 and 7 are related:
Index Value
2 12
12 13,14
13 17
17 Nan
14 4
4 7
So, a=5 and b=6; and a=4 and b=1 are also related.
Thanks to the whole community
5 Kommentare
Dyuman Joshi
am 12 Aug. 2023
Bearbeitet: Dyuman Joshi
am 12 Aug. 2023
@Sergio Rojas Blanco, please check my answer.
Akzeptierte Antwort
Dyuman Joshi
am 12 Aug. 2023
A=(1:10)';
B={15, 12, 0, [11, 7], 9, 0, [1, 20, 21], 18, 7, 0, 16, [13, 14], 17, 4, 6};
m = max([B{:}]);
z1 = nested(A,B,2,7)
%8th index is 18 which is greater than the number of elements
%so no value is related to it
z2 = nested(A,B,8,randi(m))
%3rd index is 0, so no value related to it
z3 = nested(A,B,3,randi(m))
%Similarly for 6th index
z4 = nested(A,B,6,randi(m))
z5 = nested(A,B,5,6)
%As the 1st index in B goes to the 6th index, no value will be related to it as well
z6 = nested(A,B,1,randi(m))
function z = nested(A,B,a,b)
%Returns 0 if not related, 1 if related
%Initialize z as 0
z=0;
nB=numel(B);
for m=1:numel(a)
%Assign only if the value is within the range of number of elements of B
if a(m)<=nB && a(m)>0
c=B{a(m)};
else
%If the value is not in the range, skip to the next iteration
continue
end
%Check if b is present in c or not
if ismember(b,c)
z=1;
return
else
%If not present, continue the recursion and keep checking
z=nested(A,B,c,b);
end
end
end
2 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!