필터 지우기
필터 지우기

Arrayfun - problem with input array

조회 수: 3 (최근 30일)
Damiano Capocci
Damiano Capocci 2018년 2월 26일
답변: NISARGA G K 2018년 3월 5일
I've found this kind of problem:
clear all;
a=[3,7,9,5,11,2];
b=[1,2,3,4,5,6];
l=[1,0,0,0,0,0];
f=@(x,z,y) x*l(y);
l=arrayfun(f,a,l,b);
which gives
l=[3,0,0,0,0,0]
on the contrary if i want to refere to "l" through the input value "z" in this way:
a=[3,7,9,5,11,2];
b=[1,2,3,4,5,6];
l=[1,0,0,0,0,0];
f=@(x,z,y) x*z(y);
l=arrayfun(f,a,l,b);
it gives
Index exceeds matrix dimensions.
Error in @(x,z,y)x*z(y)
why? is there a way of passing the array itself l=arrayfun(.....,l) and changing its value simultaneously?

채택된 답변

NISARGA G K
NISARGA G K 2018년 3월 5일
Hi Damiano,
I understand that you would like to change the value of array passed to 'arrayfun'.
B = arrayfun(func,A1,...,An) applies func to the elements of the arrays A1,...,An, so that B(i) = func(A1(i),...,An(i))
Since arrayfun access is element wise 'z' passed to function is scalar and hence z(y) is not possible. The following code would help you to change the value of array passed directly
a={[3,7,9,5,11,2]};
b={[1,2,3,4,5,6]};
l={[1,0,0,0,0,0]};
f=@(x,z,y) x.*z(y);
l=cellfun(f,a,l,b,'UniformOutput',0);

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by