I have a problem that I will describe:
I am receiving a continous stream of data, in the form of an array.
however I want to do some processing on a smaller subset of the array, and obtain similar results to as if i was using the whole array.
the processing is:
1) recevie data: 10 points
2) take mean of these 10 points
3) divide array/mean
and more processing which is not important.
the original array can have up to thousands of points. I know I can use a moving average, which i have done. so the average of the points 1:10 and 11:20 is the same as points 1:20.
however the problem is the third step, dividing each data by the mean.
in the end i want to plot the subset outputs, and i want it to be similar to processing the enitre data set.
Im not an expert in filters and all, but is there a good way to do this?
because the result i am getting now is quite choppy and unsmooth.
You could calculate on 1:10 then 2:11 then 3:12, etc.... This may result in "smoother" data (a bit more processing), but I'm no mathematician.
If you are averaging data, and it is choppy, there are likely multiple things wrong. The data is only going to be as good as the the sensor can measure. And if you are getting crappy data at the sensor, then software should not be the one to fix it. Fix the environment so the sensor gets the best data it can before software has to be involved.
That being said some times software filtering is needed and that's okay. Try to post what an example of your code. It is hard to understand what you are trying to do. Do you want a moving window of data to average? Or are you trying to understample where 10 values are now 1?
the data is good.what i meant by choppy was the results of the subarray processing compared to the whole-array processing.
basically i want to perform the 3 steps for a whole data set(thousands of points) and for subarrays(7-10 points) and be able to get similar results.
right now the results arent very similar, it gets better if i increase the size of my subset array (obviously!). but the problem is since i only receive the data in small subsets(7-10) points, i want to process them right away, and not have to wait to get more points.
I have the whole array in advance, but just as a reference. the real problem is assuming i only have access to the smaller subset of data points.
thanks a lot!!
ok lets say A = [1 2 3 4 5 6 7 8 9 10];
but I actually recevie it as B1 = [ 1 2 3 4 5] and B2 = [ 6 7 8 9 10]
the mean of B1 :3
mean of B2: 8
so the ouptuts would be C1 = B1/ meanB1 = [ 1/3 2/3 3/3 4/3 5/3]
and C2 = B2/ meanB2= [6/8 7/8 8/8 9/8 10/8]
the origianl array A would be: C3 = A/meanA = [1/5.5, 2/5.5 ,3/5.5, 4/5.5, 5/5.5, 6/5.5 ,7/5.5, 8/5.5 , 9/5.5, 10/5.5]
so obviously plotting C1 and C2 (one after another) is not the same as C3.
my goal is to make C1 and C2 as similar as possible to C3.
I hope this is more clear!