matlab 创建一个N × 1函数句柄,返回一个全零数组,并使用另一个函数句柄填充数组中的一个索引

kq0g1dla  于 2023-10-23  发布在  Matlab
关注(0)|答案(2)|浏览(156)

我有以下函数句柄:

f = @(t)f_0.*sin(alpha.*t).*cos(beta.*t);

我想创建一个N乘1的函数句柄“数组”,名为F(我知道在MATLAB中你不能有一个函数句柄数组),它将f放置在函数句柄“数组”中的任何随机索引位置。所有其他条目都应该是零。N是任何整数值。
例如,如果N = 3,则正确的解为:

F = @(t) [f(t); 0; 0]

另外两个正确的解决方案是:

F = @(t) [0; 0; f(t)]

F = @(t) [0; f(t); 0]

因为f(t)可以被放置在F内的任意随机索引i处。
对于任意的N,最好的方法是什么?

ej83mcc0

ej83mcc01#

根据我对这个问题的理解,下面的函数返回请求的函数句柄:

function F = farray (f, N)
    r = randi(N);
    F = @(t) [zeros(r-1, 1); f(t); zeros(N-r, 1)];
end

它可以用作:

f = @(t)f_0.*sin(alpha.*t).*cos(beta.*t);
N = 3;
F = farray(f, N);
tkqqtvp1

tkqqtvp12#

你可以有一个函数句柄的 *cell数组 *。或者一个包含函数句柄和零的单元数组,如果这是你想要的:

f = @(t)f_0.*sin(alpha.*t).*cos(beta.*t);
N = 3;
F = repmat({0}, N, 1); % N×1 cell array of zeros
n = randi(N); % random number in [1 2 ... N] with uniform distribution
F{n} = f;

相关问题