【问题标题】:Matlab: Computations with the translations of a functionMatlab:计算与函数的翻译
【发布时间】:2017-03-12 19:38:29
【问题描述】:

在提问之前,感谢您阅读这篇文章。

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

  2. 我有一个向量,v,由 N 实数组成。

  3. 问题:如何获得vw的内积u?我想把它存储为一个函数,因为我想计算u的FFT系数。

我正在尝试使用循环来执行此操作,但我将循环弄得一团糟。

请你帮帮我好吗? 非常感谢。

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

【问题讨论】:

  • 为什么需要函数句柄来计算 FFT?

标签: matlab function loops


【解决方案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 向量,计算会更容易(更快)。在这种情况下,您不必为函数句柄而烦恼。

【讨论】:

    【解决方案2】:

    问题解决了。这是代码

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

    感谢大家的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 2014-06-29
      相关资源
      最近更新 更多