使用查找填充元胞数组 table
Populating cell array using lookup table
我有一个仅包含整数的二维 matrix
。我还有一个元胞数组 tickerList
,其中包含股票代码的名称。 matrix
中的列数等于 tickerList
.
中的元素数
我正在尝试通过将 matrix
中的整数替换为 tickerList
中的相应名称来创建 cellArrayNew
。因此,例如,如果 matrix(1,1)=3
和 tickerList(3)='S&P 500'
,我想要 cellArrayNew(1,1)='S&P 500'
.
只需使用矩阵作为 tickerList
:
的索引
% Sample column names
tickerList = {'Col1' 'Col2' 'Col3'};
% Example matrix
N = numel(tickerList);
matrix = randi(N, [4, N]);
% The matrix is already in index form, so just index:
cellArrayNew = tickerList(matrix);
如果矩阵包含在 tickerList
中 不是 的索引,请使用 ismember
:
% Make some elements 'NaN';
matrix(rand(size(matrix)) < 0.2) = NaN;
% Determine which elements are in tickerList,
% as well as where they are precisely
[isin, I] = ismember(matrix, 1:N);
% Construct new matrix
cellArrayNew = repmat({NaN}, size(matrix)); % <- use any filler you want
cellArrayNew(isin) = tickerList(I(isin))
我的例子的结果:
cellArrayNew =
'Col2' 'Col1' [ NaN]
'Col3' [ NaN] 'Col2'
'Col3' 'Col3' 'Col3'
'Col3' 'Col1' 'Col2'
我有一个仅包含整数的二维 matrix
。我还有一个元胞数组 tickerList
,其中包含股票代码的名称。 matrix
中的列数等于 tickerList
.
我正在尝试通过将 matrix
中的整数替换为 tickerList
中的相应名称来创建 cellArrayNew
。因此,例如,如果 matrix(1,1)=3
和 tickerList(3)='S&P 500'
,我想要 cellArrayNew(1,1)='S&P 500'
.
只需使用矩阵作为 tickerList
:
% Sample column names
tickerList = {'Col1' 'Col2' 'Col3'};
% Example matrix
N = numel(tickerList);
matrix = randi(N, [4, N]);
% The matrix is already in index form, so just index:
cellArrayNew = tickerList(matrix);
如果矩阵包含在 tickerList
中 不是 的索引,请使用 ismember
:
% Make some elements 'NaN';
matrix(rand(size(matrix)) < 0.2) = NaN;
% Determine which elements are in tickerList,
% as well as where they are precisely
[isin, I] = ismember(matrix, 1:N);
% Construct new matrix
cellArrayNew = repmat({NaN}, size(matrix)); % <- use any filler you want
cellArrayNew(isin) = tickerList(I(isin))
我的例子的结果:
cellArrayNew =
'Col2' 'Col1' [ NaN]
'Col3' [ NaN] 'Col2'
'Col3' 'Col3' 'Col3'
'Col3' 'Col1' 'Col2'