필터 지우기
필터 지우기

How do I vectorize a sum involving an anonymous function?

조회 수: 1 (최근 30일)
Norman
Norman 2014년 8월 11일
답변: Michael Haderlein 2014년 8월 11일
Hi
I have a sum that involves an anonymous function g of the form
beam = sum_{k=-K}^{k=K} A(k) g(x-c(k))
where A and c are know vectors of length n. I would like to be able to pass beam a vector x of length m ~= n AND vectorize the result. I have tried arrayfun, but get dimension mismatches. Is there any way to implement this without resorting to a loop?
Thank you
Norm

답변 (2개)

Iain
Iain 2014년 8월 11일
Tricks to try: bsxfun, summation along the right column/row, replicating matrices as needed (repmat)

Michael Haderlein
Michael Haderlein 2014년 8월 11일
So you have a matrix g, right? Then, you don't need to sum by hand but just multiply g*A. Such as
>> x=(1:4)';
>> k=0:5;
>> A=k'.^2;
>> g=x*sqrt(k);
>> g*A
ans =
110.1470
220.2940
330.4410
440.5880
In this example, the first value 110 is g(x(1),k)*A(k) and so on:
>> sum(g(1,:).*A')
ans =
110.1470

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by