我正在尝试在三维域中构建以下函数。
其中是常数向量,
是位置向量,
是常数,
是时间。
是一个大小为 的向量,是一个大小
[1 3]
为3 维域中的点的数组,是一个常数,是一个大小为 的数组。
[NX*NY*NZ 3]
[1 NT]
以下是问题的设置。
dx = 0.1;
dy = 0.5;
dz = 0.1;
[x, y, z] = meshgrid( (1:100)*dx, (1:100)*dy, (1:100)*dz );
X = [x(:) y(:) z(:)];
k = [1 2 3];
c = 0.5;
t = 0:0.1:1;
事实上,下面的循环可以工作,但速度很慢(~200
秒)。
f = zeros(numel(X)/3, numel(t));
for n = 1:numel(t)
for i = 1:numel(X)/3
f(i, n) = tan(dot(k, X(i,:)+c*t(n)));
end
end
我考虑过使用和arrayfun
重复使用向量并在第二维中点它,但我不知道我应该为and的乘法做些什么。k
repmat
X
c
t
什么是为所有点和所有时间定义函数的有效方法?例如,此函数的输出看起来像一个 size 数组[NX*NY*NZ NT]
。