Filter löschen
Filter löschen

Help in Syntax of Eval and Sprintf

7 Ansichten (letzte 30 Tage)
ARS
ARS am 14 Mär. 2013
Hi,
I want to run the following expression:
*X = fts2mat(ESP('01-Jan-97::31-Dec-2012'))*
The above statemement works fine. ESP is my financial time seris(fts) container. I am getting the desired results in X.
But now I wish the dates to be passed from a cell array of date strings I have as mydate1{} and mydate2{} in place of the datestrings given in the first statement. I think it can be done via
*eval(sprintf(fts2mat(ESP('mydate1''::''mydate2'))));*
But the above gives error.
Help will be highly appreciated.
Regards,
AMD.

Akzeptierte Antwort

ChristianW
ChristianW am 14 Mär. 2013
Y = cell(size(mydate1)); % preallocate
for k = 1:length(mydate1)
str = [mydate1{k} '::' mydate2{k}]; % Date String Range
% str = sprintf('%s::%s',mydate1{k},mydate2{k}); % Alternative
Y{k} = fts2mat(EPS(str)); % output saved in cell Y
end
  2 Kommentare
ARS
ARS am 14 Mär. 2013
Thanks a lot.
Can you please explain this: str = sprintf('%s::%s',mydate1{k},mydate2{k});
I mean why can't it be
str = sprintf(mydate1{k},'%s::%s',mydate2{k});
Is there any order to follow? like.,,the operator :: needs to be in the start? but it is evaluated in the middle actually.
Regards
AMD.
ChristianW
ChristianW am 14 Mär. 2013
doc sprintf
An example:
sprintf('answer=%d',3) % ans = 'answer=3'
sprintf('%d is the answer',3) % ans = '3 is the answer'
The Symbol %d determines where the variable (3) is placed in the string. Same with %s, s announces that the variable is a string.
sprintf('answer=%s','HELLO')
sprintf('%s is the answer','HELLO')

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by