在问题之前,谢谢您阅读此帖子。
-
我已经定义了一个实际函数,
f= @(x) sin(x) + x.^2
,我想在向量w中存储从0到n-1的n翻译。我的意思是,我想存储向量w=( sin(x) + x.^2 , ...., sin(x- (N-1)) + (x-(N-1)).^2)
-
我有一个
N
实数的v
。 -
问题:如何获得
v
和w
的内部产品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);
感谢大家的帮助。