MATLAB:函数翻译的计算



在问题之前,谢谢您阅读此帖子。

  1. 我已经定义了一个实际函数,f= @(x) sin(x) + x.^2,我想在向量w中存储从0到n-1的n翻译。我的意思是,我想存储向量w=( sin(x) + x.^2 , ...., sin(x- (N-1)) + (x-(N-1)).^2)

  2. 我有一个 N实数的 v

  3. 问题:如何获得vw的内部产品u?我想将其存储为函数,因为我想计算u的FFT系数。

我试图用循环做到这一点,但我正在与循环/s弄乱。

你能帮我吗?非常感谢。

我在 @m7913d的帮助下完成了什么:

%%%code
N=10;
v=rand(1,N);%%vector
tras=1:N;
tsi=t.*ones(1,N);
%%ff(x)=sin(x)+x.^2
ff=sin(tsi+tras) +(tsi+tras).^2 ;
total=sum(ff.*v,2);
vpa(subs(total,t,0.1));%%check
Fs=100;% Sampling frequency
tt=-pi:1/Fs:pi;% Time vector 
L=length(tt);  % Signal length
X=double(subs(total, t,tt));
n=2^nextpow2(L);
coef=fft(X,n);

您可以如下生成一个函数单元格数组:

N = 10;
f= @(x) sin(x) + x.^2;
u = cell(N, 1);
v = rand(N, 1);
g = 0;
for i=0:(N-1)
    u{i+1} = @(x) v(i+1)*f(x + i);
    g = @(x) g(x) + u{i+1}(x);
end

请注意,我立即计算了u向量,而无需使用中间变量w

请注意,如果您立即插入所需的x矢量,则计算将更容易(并且更快)。在这种情况下,您不必麻烦函数手柄。

问题已解决。这是代码

%%%code
N=10;
v=rand(1,N);%%vector
tras=1:N;
tsi=t.*ones(1,N);
%%ff(x)=sin(x)+x.^2
ff=sin(tsi+tras) +(tsi+tras).^2 ;
total=sum(ff.*v,2);
vpa(subs(total,t,0.1));%%check
Fs=100;% Sampling frequency
tt=-pi:1/Fs:pi;% Time vector 
L=length(tt);  % Signal length
X=double(subs(total, t,tt));
n=2^nextpow2(L);
coef=fft(X,n);

感谢大家的帮助。

最新更新