C
MATLAB には、 n 個の関数ハンドルを含むセル配列があります@(t)
。定数x_star
を含むベクトルもあります。現在、セル配列内の場所にある関数とベクトル内の場所にある定数をn
掛け合わせた新しい関数ハンドルを作成しようとしています。私はこのコードを試してみましたが、「インデックスがマトリックスの次元を超えています」と出力するだけです:i
i
M= @(t) 0;
for i=1:length(x_star)
M = @(t) M(t)+ C{i}(t)*x_star(i);
end
このようにすることは可能ですか、それとももっと便利な方法がありますか?
およびは次のようx_star
にC
定義されます。
w=2*pi/24;
C = cell(n,1);
C{1}=@(t) 1;
for i=2:n
if (mod(i,2)==0)
f = @(t) sin(0.5*i*w*t);
else
f = @(t) cos(0.5*(i-1)*w*t);
end
C{i}=f;
end
A = zeros(length(t),n); %% Initialize A-matrix
A(:,1)=C{1};
for i=2:n
A(:,i)=C{i}(t);
end
x_star = (transpose(A)*A)\transpose(A)*y;
r_star=y-A*x_star;