MATLAB: How to access a struct through a field name.

arrayMATLABstruct

I am having difficulty figuring out how to accessa struct by field name. I have only been able to access it by row number. Can someone help me figure this out?
I am creating a struct with the feilds for differnt stocks. How do I write a command to access a field by matching the stock name?
For example:
ProfitCheck = PortfolioCheck(1).marketPrice > PortfolioCheck(1).averageCost;
I can get it to work with row numbers, but instead I want it to look for a stock name?
I have a list of stocks, 'symbols', and want to have the function look through the struct for a matching field name 'PortfolioCheck.symbol = AAPL then return the 'marketPrice' and 'avererageCost'
If you can point me in the right direction that would be wonderful.
Thanks
Allan
% Connects to get the data and creates a struct 'PortfolioCheck'
PortfolioCheck = IBMatlab('action','portfolio');pause(2)
1×4 struct array with fields:
symbol
localSymbol
exchange
secType
currency
right
expiry
strike
position
marketValue
marketPrice
averageCost
realizedPnL
unrealizedPnL
contract

Best Answer

It shouldn't be a problem with what you've shown since every structure in the structure array has a unique value for the symbol field. If you have a situation where the same symbol could appear in multiple strcutures in the array, I suggest you look into ismember() to pull out only those structures in the array where the symbol field has the symbol you're looking to extract. Something like
[ia, ib] = ismember({PortfolioCheck.symbol}, 'BNS');
If that doesn't work, try getting rid of the braces or swapping the order of the input arguments until you get the one that works.