<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/262265</link>
    <title>MATLAB Central Newsreader - Data Bin</title>
    <description>Feed for thread: Data Bin</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2012 by 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>MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Sun, 04 Oct 2009 15:43:01 -0400</pubDate>
      <title>Data Bin</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/262265#684552</link>
      <author>AP Pal</author>
      <description>I am new to matlab and am stuck  with what seems simple task&lt;br&gt;
i have  a column of data 1000 pts long. i need to average in groups of 10 so i need to generate a new matrix which has 100pts.&lt;br&gt;
&lt;br&gt;
i was trying to write a code with a mini file and keep making mistakes&lt;br&gt;
&lt;br&gt;
p=X&lt;br&gt;
n=1;&lt;br&gt;
i=1;&lt;br&gt;
m=length(X);&lt;br&gt;
&lt;br&gt;
avg_pts= 2;&lt;br&gt;
z= length(X)/avg_pts&lt;br&gt;
% q=0;&lt;br&gt;
p(1,1)=X(1,1);&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;for i=(1:1:z);&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;&amp;nbsp;&amp;nbsp;for q=(1:1:avg_pts);&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;if n+q&amp;lt;=m&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p(q,1)=p(q,1)+X(n+q,1);&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;else&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;end&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y(i,1)=p(q,1)/avg_pts;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;n=n+avg_pts;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;end&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&lt;br&gt;
Any help will be greatly appreciated&lt;br&gt;
thanks</description>
    </item>
    <item>
      <pubDate>Sun, 04 Oct 2009 17:05:03 -0400</pubDate>
      <title>Re: Data Bin</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/262265#684574</link>
      <author>Andrew Stevens</author>
      <description>&quot;AP Pal&quot; &amp;lt;avispal@gmail.com&amp;gt; wrote in message &amp;lt;haafq5$mvs$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; I am new to matlab and am stuck  with what seems simple task&lt;br&gt;
&amp;gt; i have  a column of data 1000 pts long. i need to average in groups of 10 so i need to generate a new matrix which has 100pts.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; i was trying to write a code with a mini file and keep making mistakes&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; p=X&lt;br&gt;
&amp;gt; n=1;&lt;br&gt;
&amp;gt; i=1;&lt;br&gt;
&amp;gt; m=length(X);&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; avg_pts= 2;&lt;br&gt;
&amp;gt; z= length(X)/avg_pts&lt;br&gt;
&amp;gt; % q=0;&lt;br&gt;
&amp;gt; p(1,1)=X(1,1);&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;   for i=(1:1:z);&lt;br&gt;
&amp;gt;      &lt;br&gt;
&amp;gt;        for q=(1:1:avg_pts);&lt;br&gt;
&amp;gt;            if n+q&amp;lt;=m&lt;br&gt;
&amp;gt;        p(q,1)=p(q,1)+X(n+q,1);&lt;br&gt;
&amp;gt;            else&lt;br&gt;
&amp;gt;            end&lt;br&gt;
&amp;gt;        end&lt;br&gt;
&amp;gt;        y(i,1)=p(q,1)/avg_pts;&lt;br&gt;
&amp;gt;       n=n+avg_pts;&lt;br&gt;
&amp;gt;       &lt;br&gt;
&amp;gt;   end&lt;br&gt;
&amp;gt;  &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Any help will be greatly appreciated&lt;br&gt;
&amp;gt; thanks&lt;br&gt;
&lt;br&gt;
Hi,&lt;br&gt;
&lt;br&gt;
You many want to try something like:&lt;br&gt;
&lt;br&gt;
%generate a dataset&lt;br&gt;
y=rand(1000,1);&lt;br&gt;
&lt;br&gt;
%average in 10 point bins&lt;br&gt;
ym=mean(reshape(y,10,100));&lt;br&gt;
&lt;br&gt;
-Andrew</description>
    </item>
    <item>
      <pubDate>Sun, 04 Oct 2009 19:15:03 -0400</pubDate>
      <title>Re: Data Bin</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/262265#684593</link>
      <author>AP Pal</author>
      <description>&lt;br&gt;
Thanks a lot Andrew, it really saved me so much headache.&lt;br&gt;
&lt;br&gt;
&quot;Andrew Stevens&quot; &amp;lt;astevens@JUNKusgs.gov&amp;gt; wrote in message &amp;lt;haakjv$6r1$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; &quot;AP Pal&quot; &amp;lt;avispal@gmail.com&amp;gt; wrote in message &amp;lt;haafq5$mvs$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; &amp;gt; I am new to matlab and am stuck  with what seems simple task&lt;br&gt;
&amp;gt; &amp;gt; i have  a column of data 1000 pts long. i need to average in groups of 10 so i need to generate a new matrix which has 100pts.&lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; i was trying to write a code with a mini file and keep making mistakes&lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; p=X&lt;br&gt;
&amp;gt; &amp;gt; n=1;&lt;br&gt;
&amp;gt; &amp;gt; i=1;&lt;br&gt;
&amp;gt; &amp;gt; m=length(X);&lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; avg_pts= 2;&lt;br&gt;
&amp;gt; &amp;gt; z= length(X)/avg_pts&lt;br&gt;
&amp;gt; &amp;gt; % q=0;&lt;br&gt;
&amp;gt; &amp;gt; p(1,1)=X(1,1);&lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &amp;gt;   for i=(1:1:z);&lt;br&gt;
&amp;gt; &amp;gt;      &lt;br&gt;
&amp;gt; &amp;gt;        for q=(1:1:avg_pts);&lt;br&gt;
&amp;gt; &amp;gt;            if n+q&amp;lt;=m&lt;br&gt;
&amp;gt; &amp;gt;        p(q,1)=p(q,1)+X(n+q,1);&lt;br&gt;
&amp;gt; &amp;gt;            else&lt;br&gt;
&amp;gt; &amp;gt;            end&lt;br&gt;
&amp;gt; &amp;gt;        end&lt;br&gt;
&amp;gt; &amp;gt;        y(i,1)=p(q,1)/avg_pts;&lt;br&gt;
&amp;gt; &amp;gt;       n=n+avg_pts;&lt;br&gt;
&amp;gt; &amp;gt;       &lt;br&gt;
&amp;gt; &amp;gt;   end&lt;br&gt;
&amp;gt; &amp;gt;  &lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; Any help will be greatly appreciated&lt;br&gt;
&amp;gt; &amp;gt; thanks&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Hi,&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; You many want to try something like:&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; %generate a dataset&lt;br&gt;
&amp;gt; y=rand(1000,1);&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; %average in 10 point bins&lt;br&gt;
&amp;gt; ym=mean(reshape(y,10,100));&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; -Andrew</description>
    </item>
    <item>
      <pubDate>Mon, 05 Oct 2009 16:49:03 -0400</pubDate>
      <title>Re: Data Bin</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/262265#684794</link>
      <author>AP Pal</author>
      <description>Any fast way to reshape the whole matrix?&lt;br&gt;
i mean converting from 100X 50&lt;br&gt;
to                               10X  50&lt;br&gt;
&lt;br&gt;
by averaging the 10  rows at a time to bin&lt;br&gt;
&lt;br&gt;
the reshape funtion worked for n X 1 matrix only.&lt;br&gt;
&lt;br&gt;
&quot;AP Pal&quot; &amp;lt;avispal@gmail.com&amp;gt; wrote in message &amp;lt;haafq5$mvs$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; I am new to matlab and am stuck  with what seems simple task&lt;br&gt;
&amp;gt; i have  a column of data 1000 pts long. i need to average in groups of 10 so i need to generate a new matrix which has 100pts.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; i was trying to write a code with a mini file and keep making mistakes&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; p=X&lt;br&gt;
&amp;gt; n=1;&lt;br&gt;
&amp;gt; i=1;&lt;br&gt;
&amp;gt; m=length(X);&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; avg_pts= 2;&lt;br&gt;
&amp;gt; z= length(X)/avg_pts&lt;br&gt;
&amp;gt; % q=0;&lt;br&gt;
&amp;gt; p(1,1)=X(1,1);&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;   for i=(1:1:z);&lt;br&gt;
&amp;gt;      &lt;br&gt;
&amp;gt;        for q=(1:1:avg_pts);&lt;br&gt;
&amp;gt;            if n+q&amp;lt;=m&lt;br&gt;
&amp;gt;        p(q,1)=p(q,1)+X(n+q,1);&lt;br&gt;
&amp;gt;            else&lt;br&gt;
&amp;gt;            end&lt;br&gt;
&amp;gt;        end&lt;br&gt;
&amp;gt;        y(i,1)=p(q,1)/avg_pts;&lt;br&gt;
&amp;gt;       n=n+avg_pts;&lt;br&gt;
&amp;gt;       &lt;br&gt;
&amp;gt;   end&lt;br&gt;
&amp;gt;  &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Any help will be greatly appreciated&lt;br&gt;
&amp;gt; thanks</description>
    </item>
    <item>
      <pubDate>Mon, 05 Oct 2009 16:49:03 -0400</pubDate>
      <title>Re: Data Bin</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/262265#684795</link>
      <author>AP Pal</author>
      <description>Any fast way to reshape the whole matrix?&lt;br&gt;
i mean converting from 100X 50&lt;br&gt;
to                               10X  50&lt;br&gt;
&lt;br&gt;
by averaging the 10  rows at a time to bin&lt;br&gt;
&lt;br&gt;
the reshape funtion worked for n X 1 matrix only.&lt;br&gt;
&lt;br&gt;
&quot;AP Pal&quot; &amp;lt;avispal@gmail.com&amp;gt; wrote in message &amp;lt;haafq5$mvs$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; I am new to matlab and am stuck  with what seems simple task&lt;br&gt;
&amp;gt; i have  a column of data 1000 pts long. i need to average in groups of 10 so i need to generate a new matrix which has 100pts.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; i was trying to write a code with a mini file and keep making mistakes&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; p=X&lt;br&gt;
&amp;gt; n=1;&lt;br&gt;
&amp;gt; i=1;&lt;br&gt;
&amp;gt; m=length(X);&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; avg_pts= 2;&lt;br&gt;
&amp;gt; z= length(X)/avg_pts&lt;br&gt;
&amp;gt; % q=0;&lt;br&gt;
&amp;gt; p(1,1)=X(1,1);&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt;   for i=(1:1:z);&lt;br&gt;
&amp;gt;      &lt;br&gt;
&amp;gt;        for q=(1:1:avg_pts);&lt;br&gt;
&amp;gt;            if n+q&amp;lt;=m&lt;br&gt;
&amp;gt;        p(q,1)=p(q,1)+X(n+q,1);&lt;br&gt;
&amp;gt;            else&lt;br&gt;
&amp;gt;            end&lt;br&gt;
&amp;gt;        end&lt;br&gt;
&amp;gt;        y(i,1)=p(q,1)/avg_pts;&lt;br&gt;
&amp;gt;       n=n+avg_pts;&lt;br&gt;
&amp;gt;       &lt;br&gt;
&amp;gt;   end&lt;br&gt;
&amp;gt;  &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Any help will be greatly appreciated&lt;br&gt;
&amp;gt; thanks</description>
    </item>
    <item>
      <pubDate>Mon, 05 Oct 2009 20:01:20 -0400</pubDate>
      <title>Re: Data Bin</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/262265#684834</link>
      <author>Jan Simon</author>
      <description>Dear AP Pal!&lt;br&gt;
&lt;br&gt;
&amp;gt; Any fast way to reshape the whole matrix?&lt;br&gt;
&amp;gt; i mean converting from 100X 50&lt;br&gt;
&amp;gt; to                               10X  50&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; by averaging the 10  rows at a time to bin&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; the reshape funtion worked for n X 1 matrix only.&lt;br&gt;
&lt;br&gt;
No, RESHAPE works really fast for any array, not just for [n x 1] matrices!&lt;br&gt;
&lt;br&gt;
The mentioned solution is efficient. A little bit faster, because it avoids the overhead of calling the function MEAN:&lt;br&gt;
&amp;nbsp;&amp;nbsp;X = rand(100, 50);&lt;br&gt;
&amp;nbsp;&amp;nbsp;Y = sum(reshape(X, 10, 10, 50), 1) / 10;&lt;br&gt;
&lt;br&gt;
Kind regards, Jan</description>
    </item>
    <item>
      <pubDate>Mon, 05 Oct 2009 22:12:03 -0400</pubDate>
      <title>Re: Data Bin</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/262265#684866</link>
      <author>AP Pal</author>
      <description>Thanks a lot Jan .. you rock!!&lt;br&gt;
now only if some one answers in my other thread to add listbox i will be set( for the time being) :P&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&quot;Jan Simon&quot; &amp;lt;matlab.THIS_YEAR@nMINUSsimon.de&amp;gt; wrote in message &amp;lt;hadjaf$pn1$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; Dear AP Pal!&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; Any fast way to reshape the whole matrix?&lt;br&gt;
&amp;gt; &amp;gt; i mean converting from 100X 50&lt;br&gt;
&amp;gt; &amp;gt; to                               10X  50&lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; by averaging the 10  rows at a time to bin&lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; the reshape funtion worked for n X 1 matrix only.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; No, RESHAPE works really fast for any array, not just for [n x 1] matrices!&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; The mentioned solution is efficient. A little bit faster, because it avoids the overhead of calling the function MEAN:&lt;br&gt;
&amp;gt;   X = rand(100, 50);&lt;br&gt;
&amp;gt;   Y = sum(reshape(X, 10, 10, 50), 1) / 10;&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Kind regards, Jan</description>
    </item>
    <item>
      <pubDate>Tue, 06 Oct 2009 09:05:06 -0400</pubDate>
      <title>Re: Data Bin</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/262265#684956</link>
      <author>Jos </author>
      <description>&quot;Jan Simon&quot; &amp;lt;matlab.THIS_YEAR@nMINUSsimon.de&amp;gt; wrote in message &amp;lt;hadjaf$pn1$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; Dear AP Pal!&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; Any fast way to reshape the whole matrix?&lt;br&gt;
&amp;gt; &amp;gt; i mean converting from 100X 50&lt;br&gt;
&amp;gt; &amp;gt; to                               10X  50&lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; by averaging the 10  rows at a time to bin&lt;br&gt;
&amp;gt; &amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; the reshape funtion worked for n X 1 matrix only.&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; No, RESHAPE works really fast for any array, not just for [n x 1] matrices!&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; The mentioned solution is efficient. A little bit faster, because it avoids the overhead of calling the function MEAN:&lt;br&gt;
&amp;gt;   X = rand(100, 50);&lt;br&gt;
&amp;gt;   Y = sum(reshape(X, 10, 10, 50), 1) / 10;&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Kind regards, Jan&lt;br&gt;
&lt;br&gt;
If the number of elements is not a multiple of the number you want to average over, you can use ACCUMARRAY&lt;br&gt;
&lt;br&gt;
A = 1:8&lt;br&gt;
n = 3 ;&lt;br&gt;
&lt;br&gt;
% M = sum(reshape(A,n,[]))/10 % fails !!&lt;br&gt;
idx = 1:numel(A) &lt;br&gt;
groupnr = ceil(idx / n) &lt;br&gt;
M = accumarray(groupnr(:),A(:),[],@mean)&lt;br&gt;
% or in 1 step, &lt;br&gt;
% M = accumarray(ceil((1:numel(A))/n).',A.',[],@mean)&lt;br&gt;
&lt;br&gt;
Jos</description>
    </item>
  </channel>
</rss>

