Matlab:计算函数的翻译

时间:2017-03-12 19:38:30

标签: matlab function loops

在提出问题之前,感谢您阅读本文。

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

  2. 我有v实数的向量N

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

  4. 我试图用循环来做这件事但是我弄乱了循环/。

    你能帮助我吗? 非常感谢。

    在@ 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);
    

2 个答案:

答案 0 :(得分:1)

您可以按如下方式生成函数的单元格数组:

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向量,计算将更容易(也更快)。在这种情况下,您不必为功能句柄烦恼。

答案 1 :(得分:0)

问题解决了。这是代码

%%%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);

感谢大家的帮助。