Convert vector to cell array
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am trying to use this
xDataNumbers = [2.5 5 7 8 11.5]
as the datanames for a fints
tsobj = fints(dates, data, datanames)
so - the question is: How do I convert a vector with numbers into a "Cell array of data series names" in the form nn.n?
Thanks. A
3 commentaires
Réponse acceptée
Kye Taylor
le 18 Juin 2013
The third input to the fints function is a cell array of strings that can be valid MATLAB identifiers. That is, the strings cannot start with numbers and can only contain letters, numbers, and the underscore. As a workaround, you could do this
% convert numeric array to cell, and convert all contents to strings
dataNamesInput = cellfun(@num2str,num2cell(xDataNumbers(:)),'uniformoutput',false);
% make sure first letter is not numeric (it will be 'x')
dataNamesInput = cellfun(@(s)['x',s],dataNamesInput,'uniformoutput',false);
% remove periods and replace with underscores
dataNamesInput = regexprep(dataNamesInput,'\.','_');
and use dataNamesInput as the third input. Someone may suggest using the genvarnames function, but it will replace periods with '0x2'. You may prefer that. In any case, you'll still need the first line of code above that converts numeric array to cell of strings.
1 commentaire
Jan
le 19 Juin 2013
This:
dataNamesInput = cellfun(@(s)['x',s],dataNamesInput, 'uniformoutput',false);
dataNamesInput = regexprep(dataNamesInput,'\.','_');
can be done faster by:
dataNamesInput = strcat('x', dataNamesInput);
dataNamesInput = strrep('.', '_');
Plus de réponses (0)
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!