使用“包裹”边界设置通过scipy convolve2d通过FFT VS进行循环卷积得到相同的结果,但是在输出矩阵的不同位置。
这两种方法中最初的位置是正确的(即哪一种方法应该转移以匹配另一种方式)?
<form id="comments-form" method="POST" action="{{url('/lessons/show/'.$course_id.'/'.$lesson->id.'/comments/'.$lesson_id)}}">
{{ csrf_field() }}
<div>
<textarea rows="10" name="comment" id="comment" placeholder="Comment"></textarea>
</div>
<div>
<input type="submit" name="submit" value="Add Comment">
</div>
</form>
<div id="comments-section">
@foreach($comments as $comment)
<div class="comment">
<p><strong>Name:</strong> {{$user_name}}</p>
<p><strong>E-mail:</strong> {{$user_email}}</p>
<p><strong>Comment:</strong> {{$comment->comment}}</p>
</div>
@endforeach
</div>
答案 0 :(得分:1)
取决于坐标原点的位置。 如果是左上角则用fft。 如果它在中心,请进行卷积。
>>> a = (1, 0, 0, 0, 0)
>>> a = np.outer(a, a)
>>> a
array([[1, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
>>> np.real(ifft2(fft2(a) * fft2(a)))
array([[1., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])
>>>
>>> a = (0, 0, 1, 0, 0)
>>> a = np.outer(a, a)
>>> a
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])
>>> scipy.signal.convolve2d(a, a, boundary="wrap", mode="same")
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]])