How would I convert a script to a function?
조회 수: 31 (최근 30일)
이전 댓글 표시
I have just made a script randArrGen.m that generates an array of n floating point numbers, which needs to be used as a function within another scipt, but I'm struggling to understand how to turn it into a function. In my head it seems easier just to run this script within the other script when required. The a and b values aren't massively important and are just to give a range for the floating point numbers to be within (I though -1000 and 1000 were good boundaries).
% randArrGen generates an array of n floating point numbers, where n is a
% value inputted by the user.
n = input("How many values do you wish to have in the array?");
a = -1000;
b = 1000;
array = (b-a).*rand(n,1) + a;
댓글 수: 0
채택된 답변
Image Analyst
2021년 1월 7일
Put a function line on it:
function array = randArrGen()
% randArrGen generates an column vector of n floating point numbers,
% where n is a value inputted by the user.
n = input("How many values do you wish to have in the array?");
a = -1000;
b = 1000;
array = (b -a ) .* rand(n, 1) + a;
댓글 수: 6
Image Analyst
2021년 1월 7일
편집: Image Analyst
2021년 1월 7일
Try this:
% Ask user for three floating point numbers.
defaultValue = {'20', '-1000', '1000'};
titleBar = 'Enter values';
userPrompt = {'Enter n : ', 'Enter a: ', 'Enter b: '};
caUserInput = inputdlg(userPrompt, titleBar, 1, defaultValue);
if isempty(caUserInput),return,end % Bail out if they clicked Cancel.
% Convert to floating point from string.
n = str2double(caUserInput{1})
a = str2double(caUserInput{2})
b = str2double(caUserInput{3})
% Check usersValue1 for validity.
if isnan(n)
% They didn't enter a number.
% They clicked Cancel, or entered a character, symbols, or something else not allowed.
% Convert the default from a string and stick that into n.
n = str2double(defaultValue{1});
message = sprintf('I said it had to be a number.\nTry replacing the user.\nI will use %.2f and continue.', n);
uiwait(warndlg(message));
end
% Do the same for a
% Check a for validity.
if isnan(a)
% They didn't enter a number.
% They clicked Cancel, or entered a character, symbols, or something else not allowed.
% Convert the default from a string and stick that into a.
a = str2double(defaultValue{2});
message = sprintf('I said it had to be a number.\nTry replacing the user.\nI will use %.2f and continue.', a);
uiwait(warndlg(message));
end
% Do the same for b
% Check b for validity.
if isnan(b)
% They didn't enter a number.
% They clicked Cancel, or entered a character, symbols, or something else not allowed.
% Convert the default from a string and stick that into b.
b = str2double(defaultValue{3});
message = sprintf('I said it had to be a number.\nTry replacing the user.\nI will use %.2f and continue.', a);
uiwait(warndlg(message));
end
Good luck, Hopefully you've been through this:
추가 답변 (1개)
Jan
2021년 1월 7일
All you have to do to convert it to a function, is to add a head line:
function array = randArrGen
Maybe you want to define n and/or a, b as input arguments?
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!