使用内部函数句柄创建使用交替值填充的外部 N x 1 函数句柄

Create an External N by 1 Function Handle Populated with Alternating Values Using an Internal Function Handle

提问人:Jonathan Frutschy 提问时间:10/25/2023 更新时间:10/25/2023 访问量:56

问:

我有以下内部函数句柄:

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

我想创建一个名为 F 的外部 N x 1 函数句柄,该句柄将 f 置于 F 中的交替位置,如下所示:

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

我想用以下函数来做到这一点:

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

这不会产生所需的填充方法。这可以在没有 for 循环或其他 MATLAB 函数(如 toeplitz())的情况下完成吗?

数组 函数 matlab 索引 函数句柄

评论

0赞 beaker 10/25/2023
F它不是 N 乘以 1 任何东西,它是您定义的匿名函数的函数句柄,或者如果您使用了正确的语法,则会是。什么是 和 ?你想要的结果是什么。f_0alphabeta
0赞 Jonathan Frutschy 10/25/2023
@beaker Alpha、beta 和 f_0 是常量。这是针对类似问题完成的。请参阅 stackoverflow.com/questions/77284570/...
0赞 beaker 10/25/2023
在这种情况下,您想要的结果是什么?
0赞 Jonathan Frutschy 10/25/2023
@beaker 所需的结果是函数句柄,如下所示:F = @t[f(t); 0; f(t); 0; f(t); 0; ... ] 其中 F 中括号 [] 中的数组大小是 N 乘以 1。我试图获得与引用帖子的已接受答案相同的结果,但使用模式 [f(t); 0; f(t); 0; ...] 而不是将 f(t) 放在数组中的任何随机索引处。
0赞 beaker 10/25/2023
为什么不只是F = zeros(N,1); F(1:2:N)=f(t);

答:

1赞 rahnema1 10/25/2023 #1

创建一个包含 和 在交替位置的 by 向量,然后将其乘以 :N101f(t)

function F = farray (f,N)
    z = zeros(N, 1);
    z(1:2:end) = 1;
    F = @(t) f(t) .* z;
end

创建数组的另一种方法:

function out = place_ft_at_alternating_positions(ft, N)
    out = zeros(N, 1);
    out(1:2:end) = ft;      
end

function F = farray (f, N)  
    F = @(t) place_ft_at_alternating_positions(f(t), N);
end 

评论

0赞 Jonathan Frutschy 10/25/2023
在这里使用占位符函数很有意义。
2赞 Wolfie 10/25/2023 #2

你可以用它来创建,假设是偶数FN

F = @(t) repmat( [f(t); 0], N/2, 1 );