Extraction of elements of an array inside the other array
Infos
Cette question est clôturée. Rouvrir pour modifier ou répondre.
Afficher commentaires plus anciens
Suppose i have
period(t1,t2,t3) =time(p)
where t1, t2, t3 are n dimensional arrays say
t1 = (1,3,4,6,8,9,0,5,4)
t2 = (3)
t3 = (4,56,7,8,5,1)
i want to show the 5th element of t1 as the output.
Output should be 8
how do i do that ? Kindly help me :)
Réponses (1)
Walter Roberson
le 4 Avr 2020
period(t1,t2,t3) =time(p)
So t1, t2, t3 are subscripts, and time(p) is either a function or array that results in either a scalar or else a length(t1) by length(t2) by length(t3) array. Afterwards, period will be max(t1) by max(t2) by max(t3) in size.
t1 = (1,3,4,6,8,9,0,5,4,)
0 is not a valid index, so t1 cannot be used as a subscript for an array.
For the sake of continuing the discussion, let us instead say
t1 = [1,3,4,6,8,9,10,5,4]
t2 = [3]
t3 = [4,56,7,8,5,1]
and now we know that whatever time(p) is, it must be either a scalar or else a 9 x 1 x 6 array
i want to show the 5th element of t1 as the output.
t1(5)
but what does that have to do with "inside another array" ??
9 commentaires
Ganesh Kini
le 4 Avr 2020
Ganesh Kini
le 5 Avr 2020
Ganesh Kini
le 5 Avr 2020
Modifié(e) : Walter Roberson
le 6 Avr 2020
Image Analyst
le 5 Avr 2020
Try ismember()
Ganesh Kini
le 5 Avr 2020
Walter Roberson
le 5 Avr 2020
(Sorry for the image of a reply instead of the text of a reply; my session froze but I was able to rescue a picture of it.)

Walter Roberson
le 6 Avr 2020
What I suspect you are looking for:
for t1 =1:1:length(a)
for t2=1:1:length(b)
for t3=1:1:length(c)
period_fun(t1,t2,t3)=time(p);
p=p+1;
end
end
end
if time is a vector or array of values then you can instead use:
na = length(a);
nb = length(b);
nc = length(c);
period_fun = permute( reshape(time(1:na*nb*nc), nc, nb, na), [3 2 1] );
with no loop.
After that I suspect you want:
target = 1.1;
[found, idx] = ismembertol(target, period_fun);
[aidx, bidx, cidx] = ind2sub([na,nb,nc], idx);
corresponding_a = a(aidx).';
corresponding_b = b(bidx).';
corresponding_c = c(cidx).';
Each of those could be a vector if there is more than one entry in target that is close enough to the target value.
Ganesh Kini
le 6 Avr 2020
Ganesh Kini
le 7 Avr 2020
Cette question est clôturée.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!