Как использовать суммирование в MATLAB? - PullRequest
0 голосов
/ 16 апреля 2010

У меня есть случайно сгенерированный вектор, скажем A длины M.

Скажи:

A = rand(M,1)

И у меня тоже есть функция, X(k) = sin(2*pi*k).

Как бы я нашел Y(k), который является суммой A(l)*X(k-l), когда l идет от 0 до M?

Предположим любое значение k ... Но ответом должно быть суммирование всех M+1 членов.

Ответы [ 4 ]

2 голосов
/ 16 апреля 2010

Учитывая M и k, вот как вы можете выполнить суммирование:

A = rand(M+1,1);            %# Create M+1 random values
Y = sin(2*pi*(k-(0:M)))*A;  %# Use a matrix multiply to perform the summation

РЕДАКТИРОВАТЬ: Вы даже можете создать функцию для Y, которая принимает k и A в качестве аргументов:

Y = @(k,A) sin(2*pi*(k+1-(1:numel(A))))*A;  %# An anonymous function
result = Y(k,A);                            %# Call the function Y
0 голосов
/ 17 апреля 2010

Возможно, вы ищете свертку векторов A и X:

Y = conv(A, X);
0 голосов
/ 17 апреля 2010

Если вы пытаетесь выполнить преобразование Фурье, вам также следует взглянуть на fft.

0 голосов
/ 16 апреля 2010
A = rand(1, M + 1);
X = sin(2 * pi * (k - (0 : M)));
total = sum(A .* X);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...