在提出问题之前,感谢您阅读本文。
我已经定义了一个真实函数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)
我有v
实数的向量N
。
问题:如何获取u
和v
的内部产品w
?我想将它存储为函数,因为我想计算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);
答案 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);
感谢大家的帮助。