7

Tôi đang cố gắng thực hiện một 'chập chững' của một bề mặt N chiều tùy ý với một vectơ. Cụ thể hơn, tôi đang cố gắng để có được đầu ra của một hạt nhân thứ tự Volterra thứ N (xem http://www.scholarpedia.org/article/Volterra_and_Wiener_series, eq.1)Sự hòa trộn của bề mặt N-chiều với vectơ trong matlab

Vì vậy, đối với một hạt nhân 1 chiều, đầu ra là sự co giãn trượt đơn giản của bậc 1 kernel với epoch đầu vào trong quá khứ. Về cơ bản, nó nhân/trọng số mọi giá trị trong epoch đầu vào trong quá khứ với một hệ số.

Đầu ra hạt nhân thứ tự thứ hai là 'convolution' của ma trận 2d có tín hiệu. Hạt nhân này nặng sản phẩm của mỗi cặp điểm trong quá khứ với một hệ số.

Hạt thứ tự thứ ba, ma trận 3d, cân mỗi bộ ba điểm trong kỷ nguyên trong quá khứ.

Ngoài ra, tôi không biết thứ nguyên/thứ tự của hạt nhân trước khi bàn tay. Nó là một tham số đầu vào ..

Tôi biết tôi có lẽ có thể làm được điều này rất unelegantly và từ từ bằng cách đi qua với một số cho vòng chỉ bằng điểm, nhưng tôi đã tự hỏi nếu có một cách để làm điều này rất nhanh chóng và thanh lịch trong matlab?

Cảm ơn

+0

Bạn đã xem lệnh ['convn'] (http://www.mathworks.com/help/matlab/ref/convn.html) chưa? –

+0

Tôi có, nhưng Im không chắc chắn những gì nó làm. Bất cứ khi nào tôi thử sử dụng nó để kết hợp một bề mặt với một vectơ, tôi nhận được một đầu ra bề mặt và không phải là một đầu ra vectơ mà tôi đang tìm kiếm; Vì vậy, tôi giả định nó không phải những gì tôi cần ... – DankMasterDan

+0

Điều này là siêu liên quan đến những gì tôi đang làm bây giờ, có thể sử dụng càng nhiều thông tin càng tốt. Bắt đầu một tiền thưởng. – SetSlapShot

Trả lời

-1

bạn có thể kiểm tra kích thước của một biến với ndims(array), và làm nhiều nếp cuộn trên các khía cạnh cần thiết: conv() hoặc conv2() cho một chiều và 2 chiều tương ứng. Nếu bạn cần thực hiện một phép chuyển đổi trên một chiều cao hơn, bạn có thể định hình lại biến của mình bằng lệnh reshape và sau đó sử dụng các lệnh trước đó.

Các vấn đề liên quan