<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/153645</link>
    <title>MATLAB Central Newsreader - seperating numbers from a cell array</title>
    <description>Feed for thread: seperating numbers from a cell array</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>Tue, 13 Nov 2007 08:23:00 -0500</pubDate>
      <title>Re: seperating numbers from a cell array</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/153645#401016</link>
      <author>Pekka </author>
      <description>"us " &amp;lt;us@neurol.unizh.ch&amp;gt; wrote in message &lt;br&gt;
&amp;lt;f8n801$343$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; Sachitha Obeysekara:&lt;br&gt;
&amp;gt; &amp;lt;SNIP down to gruesome ML atrocity...&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; here's what i'm using:&lt;br&gt;
&amp;gt; &amp;gt; regEx = '%s';&lt;br&gt;
&amp;gt; &amp;gt; for i = 1:(numFieldsOut-1)&lt;br&gt;
&amp;gt; &amp;gt;     regEx = [regEx '%n'];&lt;br&gt;
&amp;gt; &amp;gt; end&lt;br&gt;
&amp;gt; &amp;gt; b=textscan(b,regEx,'delimiter',',');&lt;br&gt;
&amp;gt; &amp;gt; output = '[';&lt;br&gt;
&amp;gt; &amp;gt; for i = 2:numFieldsOut&lt;br&gt;
&amp;gt; &amp;gt;     output = [output 'b{1,' num2str(i) '} '];  &lt;br&gt;
&amp;gt; &amp;gt; end&lt;br&gt;
&amp;gt; &amp;gt; output = [output ']'];&lt;br&gt;
&amp;gt; &amp;gt; output = eval(output);&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; WHY not simply use what you were given above?!...&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; % some data&lt;br&gt;
&amp;gt;      b={&lt;br&gt;
&amp;gt;           'T1,1,20,300,4000,00256.964'&lt;br&gt;
&amp;gt;           'T10,1,20,300,4000,00356.964'&lt;br&gt;
&amp;gt;           'TT1,10,200,3000,40000,00456'&lt;br&gt;
&amp;gt;      };&lt;br&gt;
&amp;gt;      nf=5; % #floats...&lt;br&gt;
&amp;gt; % the engine&lt;br&gt;
&amp;gt;      fmt=['%s',repmat('%f',1,nf)];&lt;br&gt;
&amp;gt;      r=textscan(char(b).',fmt,'delimiter',',');&lt;br&gt;
&amp;gt;      r=cat(2,r{:,2:end});&lt;br&gt;
&amp;gt; % the result&lt;br&gt;
&amp;gt;      b&lt;br&gt;
&amp;gt;      r&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; us&lt;br&gt;
&lt;br&gt;
Hi, the example above works fine. &lt;br&gt;
But if I have only numbers in my cell of characters, I get &lt;br&gt;
weird results.&lt;br&gt;
&lt;br&gt;
b={&lt;br&gt;
'10,20,3'&lt;br&gt;
'4,7,23'&lt;br&gt;
'9,6,1'}&lt;br&gt;
nf = 3;&lt;br&gt;
fmt=[repmat('%f',1,nf)];&lt;br&gt;
r=textscan(char(b).',fmt,'delimiter',',')&lt;br&gt;
&amp;gt;&amp;gt; r{1}&lt;br&gt;
&lt;br&gt;
ans =&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;br&gt;
&lt;br&gt;
&amp;gt;&amp;gt; r{2}&lt;br&gt;
&lt;br&gt;
ans =&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;br&gt;
&lt;br&gt;
&amp;gt;&amp;gt; r{3}&lt;br&gt;
&lt;br&gt;
ans =&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;34&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;br&gt;
&lt;br&gt;
For some reason the last character of the first row is &lt;br&gt;
combined with the first one on the second row. But that &lt;br&gt;
doesn't happen on other rows. &lt;br&gt;
However if I add a fourth cell, it works right, for example&lt;br&gt;
&lt;br&gt;
&amp;gt;&amp;gt; b={&lt;br&gt;
'10,20,3'&lt;br&gt;
'4,7,2'&lt;br&gt;
'9,6,1'&lt;br&gt;
'45,765,3'}&lt;br&gt;
r=textscan(char(b).',fmt,'delimiter',',','collectoutput',1)&lt;br&gt;
&amp;gt;&amp;gt; r{1}&lt;br&gt;
&lt;br&gt;
ans =&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10    20     3&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4     7     2&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9     6     1&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;45   765     3&lt;br&gt;
&lt;br&gt;
The mysterious connection of the first and last rows also &lt;br&gt;
occurs if I have only two cells in b.&lt;br&gt;
&lt;br&gt;
Is there something special in textscan for 3 or 2 lines of &lt;br&gt;
numbers or what is going on here?&lt;br&gt;
I'm using 2007b&lt;br&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 31 Jul 2007 11:55:45 -0400</pubDate>
      <title>Re: seperating numbers from a cell array</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/153645#385672</link>
      <author>us</author>
      <description>Sachitha Obeysekara:&lt;br&gt;
&amp;lt;SNIP down to gruesome ML atrocity...&lt;br&gt;
&lt;br&gt;
&amp;gt; here's what i'm using:&lt;br&gt;
&amp;gt; regEx = '%s';&lt;br&gt;
&amp;gt; for i = 1:(numFieldsOut-1)&lt;br&gt;
&amp;gt;     regEx = [regEx '%n'];&lt;br&gt;
&amp;gt; end&lt;br&gt;
&amp;gt; b=textscan(b,regEx,'delimiter',',');&lt;br&gt;
&amp;gt; output = '[';&lt;br&gt;
&amp;gt; for i = 2:numFieldsOut&lt;br&gt;
&amp;gt;     output = [output 'b{1,' num2str(i) '} '];  &lt;br&gt;
&amp;gt; end&lt;br&gt;
&amp;gt; output = [output ']'];&lt;br&gt;
&amp;gt; output = eval(output);&lt;br&gt;
&lt;br&gt;
WHY not simply use what you were given above?!...&lt;br&gt;
&lt;br&gt;
% some data&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b={&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'T1,1,20,300,4000,00256.964'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'T10,1,20,300,4000,00356.964'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'TT1,10,200,3000,40000,00456'&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nf=5; % #floats...&lt;br&gt;
% the engine&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fmt=['%s',repmat('%f',1,nf)];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r=textscan(char(b).',fmt,'delimiter',',');&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r=cat(2,r{:,2:end});&lt;br&gt;
% the result&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;b&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r&lt;br&gt;
&lt;br&gt;
us&lt;br&gt;
</description>
    </item>
    <item>
      <pubDate>Tue, 31 Jul 2007 11:09:28 -0400</pubDate>
      <title>Re: seperating numbers from a cell array</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/153645#385668</link>
      <author>Sachitha Obeysekara</author>
      <description>thanks&lt;br&gt;
&lt;br&gt;
here's what i'm using:&lt;br&gt;
&lt;br&gt;
regEx = '%s';&lt;br&gt;
for i = 1:(numFieldsOut-1)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;regEx = [regEx '%n'];&lt;br&gt;
end&lt;br&gt;
&lt;br&gt;
b=textscan(b,regEx,'delimiter',',');&lt;br&gt;
&lt;br&gt;
output = '[';&lt;br&gt;
for i = 2:numFieldsOut&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output = [output 'b{1,' num2str(i) '} '];  &lt;br&gt;
end&lt;br&gt;
output = [output ']'];&lt;br&gt;
&lt;br&gt;
output = eval(output);&lt;br&gt;
</description>
    </item>
    <item>
      <pubDate>Mon, 30 Jul 2007 11:15:10 -0400</pubDate>
      <title>seperating numbers from a cell array</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/153645#385498</link>
      <author>Sachitha Obeysekara</author>
      <description>hi,&lt;br&gt;
i have a cell array:&lt;br&gt;
&lt;br&gt;
b =&lt;br&gt;
&lt;br&gt;
T1,0,0,0,0,00256.964&lt;br&gt;
T1,0,0,0,0,00256.656&lt;br&gt;
T1,0,0,0,0,00256.869&lt;br&gt;
T1,0,0,0,0,00257.666&lt;br&gt;
T1,0,1,1,0,00246.296&lt;br&gt;
...and so on&lt;br&gt;
&lt;br&gt;
how do i seperate out so that i have a array like this:&lt;br&gt;
c = &lt;br&gt;
&lt;br&gt;
0 0 0 0 00256.964&lt;br&gt;
0 0 0 0 00256.656&lt;br&gt;
0 0 0 0 00256.869&lt;br&gt;
0 0 0 0 00257.666&lt;br&gt;
0 1 1 0 00246.296&lt;br&gt;
..and so on&lt;br&gt;
&lt;br&gt;
the T1 field can be discarded &lt;br&gt;
&lt;br&gt;
Cheers&lt;br&gt;
&lt;br&gt;
</description>
    </item>
    <item>
      <pubDate>Mon, 30 Jul 2007 04:38:13 -0400</pubDate>
      <title>Re: seperating numbers from a cell array</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/153645#385500</link>
      <author> JWagberg</author>
      <description>On Jul 30, 1:15 pm, "Sachitha Obeysekara" &amp;lt;sachitha.&lt;br&gt;
2.obeysek...@gsk.com&amp;gt; wrote:&lt;br&gt;
&amp;gt; hi,&lt;br&gt;
&amp;gt; i have a cell array:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; b =&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; T1,0,0,0,0,00256.964&lt;br&gt;
&amp;gt; T1,0,0,0,0,00256.656&lt;br&gt;
&amp;gt; T1,0,0,0,0,00256.869&lt;br&gt;
&amp;gt; T1,0,0,0,0,00257.666&lt;br&gt;
&amp;gt; T1,0,1,1,0,00246.296&lt;br&gt;
&amp;gt; ...and so on&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; how do i seperate out so that i have a array like this:&lt;br&gt;
&amp;gt; c =&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; 0 0 0 0 00256.964&lt;br&gt;
&amp;gt; 0 0 0 0 00256.656&lt;br&gt;
&amp;gt; 0 0 0 0 00256.869&lt;br&gt;
&amp;gt; 0 0 0 0 00257.666&lt;br&gt;
&amp;gt; 0 1 1 0 00246.296&lt;br&gt;
&amp;gt; ..and so on&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; the T1 field can be discarded&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Cheers&lt;br&gt;
&lt;br&gt;
One of many solutions:&lt;br&gt;
&lt;br&gt;
tmp=textscan(char(b)','%*s%n%n%n%n%n','delimiter',',');&lt;br&gt;
c=cat(2,C{:});&lt;br&gt;
&lt;br&gt;
The above solution has some generality but must be modified if the&lt;br&gt;
number of fields changes.&lt;br&gt;
&lt;br&gt;
HTH,&lt;br&gt;
&lt;br&gt;
jewa &amp; wagberg , net (Modify the obvious)&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
</description>
    </item>
  </channel>
</rss>
