MATLAB Answers

Extraction of elements of an array inside the other array

2 views (last 30 days)
Ganesh Kini
Ganesh Kini on 4 Apr 2020
Commented: Ganesh Kini on 7 Apr 2020
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 :)

  0 Comments

Sign in to comment.

Answers (1)

Walter Roberson
Walter Roberson on 4 Apr 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 Comments

Show 6 older comments
Walter Roberson
Walter Roberson on 6 Apr 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
Ganesh Kini on 6 Apr 2020
Thank you.
If you have spare time, could you please explain me the above code ?
Ganesh Kini
Ganesh Kini on 7 Apr 2020
Hi,
after looking at the existing code and analysis.
period_fun(a,b,c)=time(p);
period_fun is not a function, its just an array.
Could you please let me know how to access the elements passed to it ?

Sign in to comment.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!