creating dummies from a cell vector of string variables

Dear all,
I have this cell vector
A={' ps1'
' ps1'
' ps1'
' ps1'
' ps2'
' ps2'
' ps2'
' ps2'
' ps3'
' ps3'
' ps3'
' ps3'
' ps4'
' ps4'
' ps4'}
I would like to construct dummies so as to have 1 for 'ps1', 2 for 'ps2' and so forth. Is there a way of doing that?. I tried str2double but it does not work for vectors as i get a vector of NaNs
thanks

回答 (3 件)

Tom
Tom 2012 年 9 月 27 日

0 投票

B=str2num(cellfun(@(x) x(end),A))
Jan
Jan 2012 年 9 月 27 日
編集済み: Jan 2012 年 9 月 27 日

0 投票

str2double fails due to the leading part ' ps'. So you could remove it:
A={' ps1'; ' ps1'; ' ps1'; ' ps1'; ' ps2'; ...
' ps2'; ' ps2'; ' ps2'; ' ps3'; ' ps3'; ...
' ps3'; ' ps3'; ' ps4'; ' ps4'; ' ps4'};
B = strrep(A, ' ps', '');
Num = str2double(B);
But this is faster such that it reduces the CO2 production:
Str = sprintf('%s*', A{:});
Num = sscanf(Str, 'ps%d*');

カテゴリ

ヘルプ センター および File ExchangeData Type Conversion についてさらに検索

タグ

質問済み:

2012 年 9 月 27 日

Community Treasure Hunt

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

Start Hunting!

Translated by