vectorization
Ben Abbott
bpabbott at mac.com
Thu Jul 17 09:13:37 CDT 2008
On Jul 17, 2008, at 4:07 AM, dbateman wrote:
>
> Ben Abbott wrote:
>>
>> I took a look at this as well and would have responded earlier but my
>> internet went down during a thunderstorm :-(
>>
>> David, of the three versions you posted only the third ran for me
>> without error. While the 3rd version does run, it does not give (what
>> I think) is the correct answer :-(
>>
>
> Hey the third version worked!! None were tested which is why I had
> so much
> trouble getting it right. However ...
>
>>
>> octave:46> A = rand([1,9])
>> A =
>>
>> 0.90785 0.89152 0.74896 0.71078 0.21859 0.26943
>> 0.89706 0.63350 0.47987
>>
>> octave:47> q = newfilter (A, 3)
>> q =
>>
>> 0.89152 0.89152 0.89152 0.26943 0.26943 0.26943
>> 0.63350 0.63350 0.63350
>>
>> Unfortunately, a quick check of the first 3 elements gives a
>> incorrect
>> result.
>>
>> octave:48> mean (A(1:3))
>> ans = 0.84944
>>
>> The repmat approach had not occurred to me. The approach I took was
>> to ...
>>
>> a = mean (reshape(A, [npoints, numel(A)/npoints]));
>> q = reshape (ones (npoints, 1) * a, [1, numel(A)]);
>>
>> Which (I believe) produces the desired result.
>>
>> octave:49> q = newfilter (A, 3)
>> q =
>>
>> 0.84944 0.84944 0.84944 0.39960 0.39960 0.39960
>> 0.67014 0.67014 0.67014
>>
>
> The original code indexes back to a copy of the original array
> elements and
> not the mean, so I think my version is correct. Or rather it should
> have the
> same behavior as the original function.
>
> D.
opps ... of course, you are correct. My mind has a nasty habit of
"filtering" text as I read it. I'd missed that he was extracting the
value closest to the mean.
Ben
More information about the Help-octave
mailing list