Calling data with using rand command

Hi, I want to call data in the matrix by using string which is defined by rand command.
A=[1 2]
B=[2 3]
C=[3 5]
corners = 'ABC'
randompick = corners(randi(numel(corners)))
disp(randompick)
randompick(1)
Here I cant get any first row numbers of the A, B, and C.
What's wrong in this script?
Thanks.
Desired answer is
Same as what A(1), B(1) or C(1) give after randomly chosing.

2 Comments

what‘s the desired output?
Same as what A(1), B(1) or C(1) give after randomly chosing.

Sign in to comment.

 Accepted Answer

A=[1 2
2 3
3 5] ;
corners = 1:size(A,1) ;
randompick = corners(randi(numel(corners)))
disp(randompick)
idx = randompick(1) ;
iwant = A(idx,1)

6 Comments

? OP has mentioned "I want to call data in the matrix by using string which is defined by rand command."
corners = 'ABC'
I know....what is the necessity to call it by strings? At the end if strings are there..he has to use eval which is not advised. When there is a option of calling by indices why to use strings?
I need B and C definition. This answer is not useful for me. Because I am trying to shorten this long script to below script.
for i=1:1000
r = randi([1 3]);
switch r
case 1 %A
x(i+1)=(x(i)+A(1))/2;
y(i+1)=(y(i)+A(2))/2;
case 2 %B
x(i+1)=(x(i)+B(1))/2;
y(i+1)=(y(i)+B(2))/2;
case 3 %C
x(i+1)=(x(i)+C(1))/2;
y(i+1)=(y(i)+C(2))/2;
end
end
for i=1:10000
corners = 'ABC';
randompick = corners(randi(numel(corners)));
disp(randompick)
x(i+1)=(x(i)+randompick(1))/2;
y(i+1)=(y(i)+randompick(2))/2;
end
Did you notice that I have copied all the three vertices in a single matrix A...? Why do you think the code is not useful?
A = [A ; B ; C] ;
for i=1:1000
r = randi([1 3]);
x(i+1)=(x(i)+A(r,1))/2;
y(i+1)=(y(i)+A(r,2))/2;
end
My apologize, thanks..
No issues.....No aplogizes.......you are welcome.......

Sign in to comment.

More Answers (0)

Asked:

on 5 Feb 2019

Commented:

on 5 Feb 2019

Community Treasure Hunt

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

Start Hunting!