Domanda

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'
È stato utile?

Soluzione

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top