How to access a struct through a field name.
조회 수: 22 (최근 30일)
이전 댓글 표시
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
Image Analyst
2020년 11월 26일
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.
채택된 답변
Image Analyst
2020년 11월 26일
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
Image Analyst
2020년 11월 30일
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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Startup and Shutdown에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!