gpt4 book ai didi

octave - octave 中移动窗口(movfun)的大小有什么问题?

转载 作者:行者123 更新时间:2023-12-05 06:50:06 26 4
gpt4 key购买 nike

我正在尝试在 Octave 音程中使用 movfun(移动窗口)

x = -1000:0.1:1000
y = sin(x)
movfun(@(arg) printf("%d\n", size(arg)), y(1:100), 4)

我希望看到所有 4s

然而,令我惊讶的是(对我而言)我得到:

4
1
4
97
2
1
3
1
3
1
ans =

Columns 1 through 29:

4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5

Columns 30 through 58:

5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5

Columns 59 through 87:

5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5

Columns 88 through 100:

5 5 5 5 5 5 5 5 5 5 5 5 4

我的期望有什么问题?

最佳答案

这会散发出更多的光(为了更清晰,我将窗口大小增加到 8):

movfun( @(x) size(x, 1), y(1:100), 8 )
movfun( @(x) size(x, 2), y(1:100), 8 )

它们分别产生以下输出:

4   5   6   7   8   8   8   8   [...]  8   8   8   8   7   6   5
1 1 1 1 93 93 93 93 [...] 93 93 93 93 1 1 1

这告诉我们,据推测,在幕后,movfun 确保以垂直形式传递每个 8 元素向量以进行处理,并且它将边缘特殊地视为单个输入,但随后抓取所有“非边缘”元素并同时执行涉及所有 93 列的某种形式的矢量化计算。

我们可以从文档中确认“边缘”行为:

"Endpoints"

This property controls how results are calculated at theboundaries (endpoints) of the window. Possible values are:

"shrink" (default)
The window is truncated at the beginning and end of the array to exclude elements for which there is no source data. For example, with a window of length 3, 'Y(1) = FCN (X(1:2))', and 'Y(end) = FCN (X(end-1:end))'.

关于octave - octave 中移动窗口(movfun)的大小有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66470270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com