How to access a struct through a field name.
22 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Allan Munro
el 26 de Nov. de 2020
Comentada: Image Analyst
el 30 de Nov. de 2020
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'
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/429908/image.png)
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
3 comentarios
Image Analyst
el 26 de Nov. de 2020
But you're a smart guy so I'm assuming you got my answer below to work. If not, attach your variable in a .mat file with the paper clip icon.
Respuesta aceptada
Image Analyst
el 26 de Nov. de 2020
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.
2 comentarios
Image Analyst
el 30 de Nov. de 2020
Make it easy for us to help you. Can you attach PortfolioCheck in a .mat file:
save('answers.mat', 'PortfolioCheck');
then use the paper clip icon to attach it.
Más respuestas (0)
Ver también
Categorías
Más información sobre Startup and Shutdown en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!