문제

I have a cell array that looks like the following:

Tickerarray = 

'MNST'    'MNST'    'MNST'    'ALGN'    'ALGN'
'GRA'     'VLO'     'GRA'     'SKS'     'SKS' 
'VLO'     'GRA'     'SKS'     'TSO'     'JDSU'
'TSO'     'TSO'     'TSO'     'VLO'     'TSO' 

Given a certain column of this cell array, I need to find for each entry the most distant (to the right) consecutive column that contains that entry. For example, given the first column of this cell array, I would want an output:

'3'
'3'
'2' % even though VLO appears in column 4, it does not appear consecutively
'5'

Given column 3 as input, I would want as output:

'1'
'1'
'3'
'3'
도움이 되었습니까?

해결책

This can be done using strcmp or similar functions to do the string matching across your cell array, then using sum to look for the first column with all zeros (no hits) if any.

c= 1; % which column do we want
sArray = Tickerarray(:, c:End); 
l = size(sArray,1); % how many rows

% preallocating output array 
out = ones(l,1).*size(sArray,2); 

for n = 1:l
   str = sArray{n,1};
   x = strcmp(str, sArray); % is logical index of hits
   m = find(sum(x)==0,1); % find first column containing all zeros
   if ~isempty(m)  % else defaults to preallocated value
      out(n) = m-1; 
   end
end
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top