0
在Matlab中使用Arrayfun時遇到問題。我有角度的矢量和我想避免一個for loop
我申請:帶有多輸入的ArrayFun
rmatrix1 = arrayfun(...
@(x) anglesLoop(iblade, iradius, jradius, ifrequency, x, rot), ...
angles, 'uniformoutput', false);
凡iblade = 1
,iradius = 1
,jradius = 1
,ifrequency = 1
和rot = 0.5
。
函數看起來象:
%% Angles Loop
function rmatrix = anglesLoop(iblade, iradius, jradius, ifrequency, angles, rot)
global frequency blade
fshifted =(frequency(ifrequency)-angles*rot);
S11 = kaimal(fshifted);
S22 = S11;
r = distance(iradius,jradius,angles);
aux = (3/(2*pi)).*coherence(r).*exp(-1i*angles*ifrequency*blade(iblade)/3);
rmatrix = (sqrt(S11).*sqrt(S22).*aux.*exp(1i*2*pi.*angles.*1/3));
end
與子功能
%% distance for coherence function
function r=distance(x1,x2,theta)
r = sqrt(x1^2+x2^2- 2*x1*x2*cos(theta));
end
而且
%% Coherence
function gamma=coherence(r)
global frequency v10 L1
if r==0
gamma=1;
else
gamma=exp(-12.*sqrt((frequency.*r./v10).^2+(0.12.*r./L1).^2));
end
的問題是,當我在arrayfun
應用anglesLoop
功能我獲得細胞64個不同的陣列,而我應該獲得一個64位向量h是角度長度。 rmatrix1應該是64個元素的向量。有人可以給我一些建議嗎?