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

yx2lnoni  于 6个月前  发布在  Matlab
关注(0)|答案(2)|浏览(70)

我有以下内部函数句柄:

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

字符串
我想创建一个外部的N乘1函数句柄,名为F,它将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())的情况下完成吗?

qvsjd97n

qvsjd97n1#

您可以使用它创建F,假设N是偶数

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

字符串

t8e9dugd

t8e9dugd2#

创建一个N1的向量,其中包含01,然后将其乘以f(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

相关问题