Table variable subscripts must be real positive integers
Ältere Kommentare anzeigen
Using the data from https://la.mathworks.com/help/finance/black-litterman-portfolio-optimization.html, and running the code head(T(:,["Dates" benchmarkName assetNames])), get the following error: Table variable subscripts must be real positive integers, logicals, character vectors, or cell arrays of character vectors. I dont now how to fix it.
thanks
9 Kommentare
Dave B
am 29 Jul. 2021
This code (copied from the referenced page) works for me, can you double check what's in the benchmarkName and assetNames variables?
T = readtable('dowPortfolio.xlsx');
assetNames = ["AA", "AIG", "WMT", "MSFT", "BA", "GE", "IBM"];
benchmarkName = "DJI";
head(T(:,["Dates" benchmarkName assetNames]))
Eduardo Orellana
am 29 Jul. 2021
Dave B
am 29 Jul. 2021
What version of MATLAB? (i.e. >> version)
The error message doesn't indicate string as an option which makes me think it's before 2016b
In which case, try:
assetNames = {'AA' 'AIG' 'WMT' 'MSFT' 'BA' 'GE' 'IBM'};
benchmarkName = 'DJI';
head(T(:,['Dates' benchmarkName assetNames]))
Eduardo Orellana
am 29 Jul. 2021
Eduardo Orellana
am 29 Jul. 2021
Bearbeitet: Eduardo Orellana
am 29 Jul. 2021
Dave B
am 29 Jul. 2021
How about breaking down the problem a little:
head(T)
head(T(:,'Dates'))
head(T(:,"Dates"))
head(T(:,benchmarkName))
head(T(:,assetNames))
Which of these lines fails/works?
Eduardo Orellana
am 29 Jul. 2021
Bearbeitet: Eduardo Orellana
am 29 Jul. 2021
That helps, this sort of fits with my previous hypothesis i.e. that you need to provide char not string:
Let's work our way back to the final bit building off of:
head(T(:,'Dates'))
head(T(:,'DJI')) % just a different table variable
head(T(:,{'Dates' 'DJI'}) % Two table variables
% specifying 'DJI' in a workspace variable
benchmarkName = 'DJI';
head(T(:,{'Dates' benchmarkName}))
% specifying all of the assetNames
assetNames = {'AA' 'AIG' 'WMT' 'MSFT' 'BA' 'GE' 'IBM'};
head(T(:,assetNames))
% one way to put these all together
head(T(:,{'Dates' benchmarkName assetNames{:}}))
% the line of code from my previous comment
% (just in case something got confused and this works now)
head(T(:,['Dates' benchmarkName assetNames]))
Eduardo Orellana
am 30 Jul. 2021
Antworten (1)
Eike Blechschmidt
am 29 Jul. 2021
0 Stimmen
I guess you just forgot the quotation marks around benchmarkName and assetNames.
1 Kommentar
Eduardo Orellana
am 29 Jul. 2021
Kategorien
Mehr zu Tables finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!