Number of variables dependent on user input

Hi Everyone, I would like to have user input for number of Securities and weights for each security in a portfolio. For Example:
numsec = ('Enter the number of securities in Portfolio: ');
numsec = input(numsec)
If the user input is "2" then
Security1 = ('Enter Security 1 Ticker: ');
Security1 = input(Security1,'s');
Security1Wt = ('Enter Security 1 Weight (ex: .25): ');
Security1Wt = input(Security1Wt);
Security2 = ('Enter Security 2 Ticker: ');
Security2 = input(Security2,'s');
Security2Wt = ('Enter Security 2 Weight (ex: .25): ');
Security2Wt = input(Security2Wt);
I want this to be dynamic so that there are Securities and Security weight variables for the number of securities in the portfolio. Sorry if I am not asking this clearly as I am a matlab rookie. Also, if any of the code I posted is ugly and can be done in a betterfashion, please let me know! Kind regards.

 Accepted Answer

the cyclist
the cyclist on 12 Oct 2015
Edited: the cyclist on 12 Oct 2015
Use cell arrays:
numsec = ('Enter the number of securities in Portfolio: ');
numsec = input(numsec)
Security = cell(numsec,1);
SecurityWt = nan(numsec,1);
for ns = 1:numsec
securityNumberString = num2str(ns);
Security{ns} = input(['Enter Security ',securityNumberString,' Ticker: '],'s');
SecurityWt(ns) = input(['Enter Security ',securityNumberString,' Weight (ex: .25): ']);
end
Notice that Security is a cell array, convenient for storing text. SecurityWt is a numeric array. Pay attention to where I used curly brackets instead of parentheses.

5 Comments

Worked like a charm. Thanks so much!
The best form of thanks is accepting the solution, which rewards the person who answered, and also might serve as a guide for a person who has a similar question later.
Whoops sorry I thought I accepted earlier. Question related to this topic, if i wanted to display a pie chart of all of my securities and weights based on the above code, how can this be done. I appear to be stuck. I tried transposing securities and then simply doing:
pie(Security,SecurityWt)
You have the label as the first argument, and the numeric value second. It should be the other way around:
pie(SecurityWt,Security)
Wow I feel dumb, thanks so much.

Sign in to comment.

More Answers (0)

Categories

Find more on Portfolio Optimization and Asset Allocation in Help Center and File Exchange

Tags

Asked:

on 12 Oct 2015

Commented:

on 13 Oct 2015

Community Treasure Hunt

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

Start Hunting!