Create a function that uses indexing

조회 수: 3 (최근 30일)
Spaceman
Spaceman 2024년 3월 7일
편집: Spaceman 2024년 3월 9일
Given: Create a function called pick_username that will receive an input argument, which is a vector of values. The function will randomly pick one element out of the provided input vector vec and return the value in that element. Remember, your element numbers are integers from 1 to N, where N is the total number of values in the vector.
Find: How do you select a single element number that is a random integer from 1 to N? How do you then take that random element number and return Value as the actual number saved in that random location in vector vec?
Issue: I'm not sure if I am supposed to be using a function that ramdomizes results or just using the randi function.
My Solution: Does this make sense?
%% Thanks to Victor, I think I understand what to do here, I just want
%% to make sure it makes sense to people with vastly more experience in MATLAB environment than myself.
function Value=pick_kweave19(vec)
%length(vec); % This function is used to determine the length of vector,
%but do I even need this line of code if I have the next line as is?
%random_index = randi(length(vec)); % I took this line of code out as it is
%redundant, I assigned Value to the output instead
Value=randi(length(vec))
end
% Code used to call function vec=1:1:100; Value=pick_kweave19(vec)
  댓글 수: 5
Victor
Victor 2024년 3월 8일

"%but do I even need this line of code if I have the next line as is?"

It is not necessary, I just put a separated line there so that you can know how to find the length of the input array.

Spaceman
Spaceman 2024년 3월 9일
Thank you both, I always only come to MATLAB answers after I have been trying different things and staring blanky at my monitor for hours on end with no success. I always try to scrounge from the help menu and documentation as well. It makes sense to me after I know the sensical way it needs to be done, and from my mistakes I always learn.

댓글을 달려면 로그인하십시오.

채택된 답변

Victor
Victor 2024년 3월 7일
편집: Victor 2024년 3월 7일
Here is the full program, it can run in a m-file, if you want the function only, you can spilt it and use it in other m-file. Remember, return 1 thing at a time and if you have any questions, feel free to ask! :D
namearray = {'apple', 'banana', 'orange', 'grape','mango'}; % Create array with string elements
pick_kweave19(namearray)
function Value=pick_kweave19(array)
length(array); % This function is used to determine the length of array
random_index = randi(length(array)) % Choosing a random index in the length of array, add ' ; ' at the
% end if you dont want it to appear on command window
Value=random_index;
%Value=array(random_index); % Uncomment this line if you wish to return
% the value of array at the random index
% Remeber to return 1 thing only at a time!!
end
  댓글 수: 4
Victor
Victor 2024년 3월 8일
You can accept my answer so that if anyone encounters the question like you, they can read my explanation :D
Spaceman
Spaceman 2024년 3월 9일
편집: Spaceman 2024년 3월 9일
I will be happy to accept your answer, as it helped me to get done what I believe the exercise was asking. ONE more question, is the function, length, commonly used when indexing? It was weird because when I learned it I wondered why someone would need to know the max value of a particular array/vector. It seems it's often used when trying to do what we did above by selecting a random integer from a vector of integers... I just don't know/understand why yet... Also is it possible to return MORE than one value when indexing? E.g. 2 instead of 1 like above?

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

제품


릴리스

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by