<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/154155</link>
    <title>MATLAB Central Newsreader - comparison of cell entries</title>
    <description>Feed for thread: comparison of cell entries</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2008 by The MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>The MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Wed, 08 Aug 2007 11:45:02 -0400</pubDate>
      <title>comparison of cell entries</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/154155#386763</link>
      <author>Corinna Schmitt</author>
      <description>Hallo,&lt;br&gt;
&lt;br&gt;
I have a cell construction with 9 columns where the &lt;br&gt;
following data is stored:&lt;br&gt;
&lt;br&gt;
1	  1	  1	  1	  1	  AR_WIZ	  &lt;br&gt;
165855.0	  59748.0	  01_01_01_01 &lt;br&gt;
1	  1	  1	  1	  0	  AR_WIZ	  &lt;br&gt;
139876.0	  60372.0	  01_01_01_01 &lt;br&gt;
	  	  	  	  	  	  71662.0&lt;br&gt;
	  71760.0	   &lt;br&gt;
	  	  	  	  	  	  71447.0&lt;br&gt;
	  71760.0	   &lt;br&gt;
	  	  	  	  	  	  69771.0&lt;br&gt;
	  70356.0	   &lt;br&gt;
&lt;br&gt;
Now I want to delete those rows where in column 9 nothing &lt;br&gt;
stands. My idea was the following one:&lt;br&gt;
&lt;br&gt;
x=finalTable;&lt;br&gt;
test='';&lt;br&gt;
for i=1:(numberOfRows-1)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a=x(i,9)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if test==a&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for j=1:9&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x(i,j)=[];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
Here an example: If we look in row 1 a=01_01_01_01 so &lt;br&gt;
nothing is to do. It is the same with row 2. If we now look &lt;br&gt;
at line 3 a=''. Now the if-cas eis true and all entries in &lt;br&gt;
x in row 3 should be set to [] which means that the row &lt;br&gt;
will be deleted.&lt;br&gt;
&lt;br&gt;
At the moment I receive the error message: ??? Undefined &lt;br&gt;
function or method 'eq' for input arguments of type 'cell'.&lt;br&gt;
&lt;br&gt;
All in all I want to downsize x in the way that the rows &lt;br&gt;
where column 9 is empty will be deleted.&lt;br&gt;
&lt;br&gt;
Can anyone help me?&lt;br&gt;
&lt;br&gt;
Thanks, Corinna&lt;br&gt;
</description>
    </item>
    <item>
      <pubDate>Wed, 08 Aug 2007 12:00:42 -0400</pubDate>
      <title>Re: comparison of cell entries</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/154155#386767</link>
      <author>Titus</author>
      <description>Hi Corinna,&lt;br&gt;
&lt;br&gt;
several comments: line 4 should be a=x{i,9}, to get the element (string), &lt;br&gt;
because, as the error message tells you, a is a cell array again, if you use &lt;br&gt;
().&lt;br&gt;
Next: to compare strings, use strcmp instead of ==, and instead of test='' &lt;br&gt;
use isempty. So we end up with&lt;br&gt;
&lt;br&gt;
x=finalTable;&lt;br&gt;
for i=1:(numberOfRows-1)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;a=x{i,9};&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;if isempty(a)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for j=1:9&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x{i,j}=[];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
Now: instead of marking them, just fill an array with true and false to kill &lt;br&gt;
those rows later:&lt;br&gt;
&lt;br&gt;
x=finalTable;&lt;br&gt;
toBeDeleted = false(numberOfRows,1);&lt;br&gt;
for i=1:(numberOfRows-1)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;a=x{i,9};&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;if isempty(a)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toBeDeleted(i) = true;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
Why not vectorize? You can do this in one step using cellfun&lt;br&gt;
toBeDeleted = [cellfun(@isempty, x(1:numberOfRows-1,9)); false];&lt;br&gt;
&lt;br&gt;
The false at the end, because you don't want to remove the last line?&lt;br&gt;
&lt;br&gt;
and now delete the rows:&lt;br&gt;
x(toBeDeleted, :) = [];&lt;br&gt;
&lt;br&gt;
Titus&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
"Corinna Schmitt" &amp;lt;csc@mathworks.com&amp;gt; schrieb im Newsbeitrag &lt;br&gt;
news:f9cabu$k9r$1@fred.mathworks.com...&lt;br&gt;
&amp;gt; Hallo,&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; I have a cell construction with 9 columns where the&lt;br&gt;
&amp;gt; following data is stored:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; 1   1   1   1   1   AR_WIZ&lt;br&gt;
&amp;gt; 165855.0   59748.0   01_01_01_01&lt;br&gt;
&amp;gt; 1   1   1   1   0   AR_WIZ&lt;br&gt;
&amp;gt; 139876.0   60372.0   01_01_01_01&lt;br&gt;
&amp;gt;             71662.0&lt;br&gt;
&amp;gt;   71760.0&lt;br&gt;
&amp;gt;             71447.0&lt;br&gt;
&amp;gt;   71760.0&lt;br&gt;
&amp;gt;             69771.0&lt;br&gt;
&amp;gt;   70356.0&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Now I want to delete those rows where in column 9 nothing&lt;br&gt;
&amp;gt; stands. My idea was the following one:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; x=finalTable;&lt;br&gt;
&amp;gt; test='';&lt;br&gt;
&amp;gt; for i=1:(numberOfRows-1)&lt;br&gt;
&amp;gt;    a=x(i,9)&lt;br&gt;
&amp;gt;    if test==a&lt;br&gt;
&amp;gt;        for j=1:9&lt;br&gt;
&amp;gt;            x(i,j)=[];&lt;br&gt;
&amp;gt;        end&lt;br&gt;
&amp;gt;    end&lt;br&gt;
&amp;gt; end&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Here an example: If we look in row 1 a=01_01_01_01 so&lt;br&gt;
&amp;gt; nothing is to do. It is the same with row 2. If we now look&lt;br&gt;
&amp;gt; at line 3 a=''. Now the if-cas eis true and all entries in&lt;br&gt;
&amp;gt; x in row 3 should be set to [] which means that the row&lt;br&gt;
&amp;gt; will be deleted.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; At the moment I receive the error message: ??? Undefined&lt;br&gt;
&amp;gt; function or method 'eq' for input arguments of type 'cell'.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; All in all I want to downsize x in the way that the rows&lt;br&gt;
&amp;gt; where column 9 is empty will be deleted.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Can anyone help me?&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Thanks, Corinna &lt;br&gt;
&lt;br&gt;
&lt;br&gt;
</description>
    </item>
    <item>
      <pubDate>Wed, 08 Aug 2007 12:10:53 -0400</pubDate>
      <title>Re: comparison of cell entries</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/154155#386769</link>
      <author>Corinna Schmitt</author>
      <description>Hallo,&lt;br&gt;
&lt;br&gt;
&amp;gt; Now I want to delete those rows where in column 9 nothing &lt;br&gt;
&amp;gt; stands. My idea was the following one:&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; x=finalTable;&lt;br&gt;
&amp;gt; test='';&lt;br&gt;
&amp;gt; for i=1:(numberOfRows-1)&lt;br&gt;
&amp;gt;     a=x(i,9)&lt;br&gt;
&amp;gt;     if test==a&lt;br&gt;
&amp;gt;         for j=1:9&lt;br&gt;
&amp;gt;             x(i,j)=[];&lt;br&gt;
&amp;gt;         end&lt;br&gt;
&amp;gt;     end&lt;br&gt;
&amp;gt; end&lt;br&gt;
&amp;gt; &lt;br&gt;
&lt;br&gt;
I just solved the first error with the following code:&lt;br&gt;
&lt;br&gt;
x=finalTable;&lt;br&gt;
test='';&lt;br&gt;
for i=1:(numberOfRows-1)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a=x(i,9);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b=i;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if strcmp(test,a)==1&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for j=1:9&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x{i,j}=[];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
But when I now check the size of x with 'whos' is the same &lt;br&gt;
as before. The wanted rows are not deleted they are just &lt;br&gt;
empty. I now constructed a new variable y:&lt;br&gt;
&lt;br&gt;
y=cell(1576,9)&lt;br&gt;
for counter=1:1576&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y(counter,1)=x(counter,1);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y(counter,2)=x(counter,2);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y(counter,3)=x(counter,3);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y(counter,4)=x(counter,4);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y(counter,5)=x(counter,5);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y(counter,6)=x(counter,6);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y(counter,7)=x(counter,7);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y(counter,8)=x(counter,8);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y(counter,9)=x(counter,9);&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
y has now the size I wanted.&lt;br&gt;
&lt;br&gt;
But is there no easier way for this step?&lt;br&gt;
&lt;br&gt;
Thanks, Corinna&lt;br&gt;
</description>
    </item>
    <item>
      <pubDate>Wed, 08 Aug 2007 14:05:21 -0400</pubDate>
      <title>Re: comparison of cell entries</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/154155#386798</link>
      <author>us</author>
      <description>Corinna Schmitt:&lt;br&gt;
&amp;lt;SNIP wants to remove the little guys...&lt;br&gt;
&lt;br&gt;
&amp;gt; Now I want to delete those rows where in column 9 nothing &lt;br&gt;
stands...&lt;br&gt;
&lt;br&gt;
one of the many solutions&lt;br&gt;
&lt;br&gt;
% some data&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c{1,1}=1:10;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c{2,1}=1:5;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c{3,1}=1:15;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c{4,1}=1:20;&lt;br&gt;
% the engine&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;len=cellfun(@length,c);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c(len&amp;lt;10)=[];&lt;br&gt;
% the result&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&lt;br&gt;
&lt;br&gt;
us&lt;br&gt;
</description>
    </item>
  </channel>
</rss>
