Octave에서 다음과 같이 arrayfun에서 "if"를 사용할 수 있습니까?Octave/Matlab의 arrayfun에서 if 절 사용
a = [ 1 2; 3 4];
arrayfun(@(x) if x>=2 1 else 0 end, a)
그리고 옥타브 불평 :
이>>> arrayfun(@(x) if x>=2 1 else 0 end, a)
^
이 절은 arrayfun에서 허용되는 경우?
Octave에서 다음과 같이 arrayfun에서 "if"를 사용할 수 있습니까?Octave/Matlab의 arrayfun에서 if 절 사용
a = [ 1 2; 3 4];
arrayfun(@(x) if x>=2 1 else 0 end, a)
그리고 옥타브 불평 :
이>>> arrayfun(@(x) if x>=2 1 else 0 end, a)
^
이 절은 arrayfun에서 허용되는 경우?
Octave에서는 인라인 또는 익명 함수에서 if/else 문을 정상적으로 사용할 수 없습니다. 당신은 자신의 파일 또는이 같은 하위 기능으로 함수를 정의 할 수 있습니다
function a = testIf(x)
if x>=2
a = 1;
else
a = 0;
end
end
과 같이 arrayfun 전화 :
arrayfun(@testIf,a)
ans =
0 1
1 1
또는 당신은 인라인 함수 주위에이 작품을 사용할 수 있습니다
iif = @(varargin) varargin{2 * find([varargin{1:2:end}], 1, ...
'first')}();
arrayfun(iif, a >= 2, 1, true, 0)
ans =
0 1
1 1
자세한 내용은 here입니다.
MATLAB에서는 설명하는 문제에 대해 if 문을 사용할 필요가 없습니다. 실제로 arrayfun을 사용하는 것이 매우 간단합니다.
arrayfun(@(x) x>=2, a)
내 생각에 옥타브에서도 작동합니다.
x>=2
여기에 트릭을 수행해야합니다 당신이 실제로하지
주에서이 모든 경우에 arrayfun해야합니다.
감사합니다. Dennis, 그건 의미가 있습니다. –
감사합니다. 몰리가 도움이됩니다. –