2017-03-12 6 views
0

質問の前に、この記事を読んでいただきありがとうございます。Matlab:関数の変換を伴う計算

  1. Iは実関数、f= @(x) sin(x) + x.^2を定義していると私は、Nはベクトルwに、0からN-1までのFを変換し保存します。つまり、ベクターを保存したいと考えています。w=(sin(x) + x.^2 , ...., sin(x- (N-1)) + (x-(N-1)).^2)

  2. 私にはvNという実数があります。

  3. 質問:uvwの内製品を入手するにはどうすればよいですか? 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

なぜFFTを計算するには関数ハンドルが必要ですか? – m7913d

答えて

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

ありがとうございました。

1

あなたは機能のセル配列を生成することができます:私はせずに、一度uベクトルを計算

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 

注意中間変数wを使用します。

ご希望のxベクターをすぐに挿入すると、計算が簡単に(また高速に)実行できます。その場合、関数ハンドルを扱う必要はありません。