2
Matlab에서 다음 함수를 구현했습니다.이 루프 대신 cellfun 또는 arrayfun을 어떻게 사용할 수 있습니까?
function [x y] = cloud(a,b,phi,x0,y0,N)
phi=phi*2*pi/360;
m=ceil(5*N/pi);
x=a*(-1+2*rand(m,1));
y=b*(-1+2*rand(m,1));
f=sqrt(a^2 - b^2);
indexMatrix=zeros(m,3);
indexMatrix(:,1)=x;
indexMatrix(:,2)=y;
insidePointsMatrix=zeros(1,2);
j=1;
for i=1:m
insidePoint=sqrt(((x(i)+f).^2) + (y(i))^2) + sqrt(((x(i)-f).^2) + (y(i))^2);
if (insidePoint<=2*a)
indexMatrix(i,3)=1;
%insidePointsMatrix(j,:)=indexMatrix(i,1:2);
if j<=N
insidePointsMatrix(j,1:2)=indexMatrix(i,1:2);
j=j+1;
end
end
end
나는 약 arrayfun
및 cellfun
을 읽고있다, 그리고 나는 이미 그것을 사용하여 구현하는 기능을 단축 할 수 있는지 궁금하고있다. 주어진 2 x n 행렬 A
여기서 (u, v)는 주어진 행에 대한 항목입니다. 각 행에 대해 다음 수식의 출력을 나열하는 행렬을 어떻게 반환 할 수 있습니까?
sqrt((u+f).^2+v.^2) + sqrt((u-v)^2+v^2)
변수 f
및 a
은 상기 정의된다. 일련의 점을 타원으로 변환하려고합니다.