1

MATLAB で書きたい関数は次のとおりです。

関数

myとには、それぞれとyのインデックスを使用しています。これが私がこれまでに持っているものです:rmm

mse = 1/n *(symsum(((rm{i}-m{i})^2),i,1,n));

このエラーが発生しています:

エラーpcmencdec_hw2(100 行目)

mse = 1/n *(symsum(((rm{i}-m{i})^2),i,1,n));
4

1 に答える 1

0

数値を格納する cell 配列の場合

cell 配列は、数値を格納している場合、MATLAB 行列/double 配列に変換できます。この変換は、cell2mat()関数を使用して行うことができます。これら 2 つの配列間で要素単位の減算を実行して、対応する要素間の差を見つけることができます (これにより、 と と同じ長さの差の配列が得られますrm) m。要素を二乗してこれらの差の平方根をとること.^2は、次のステップです。は.、要素ごとに操作を適用する必要があることを示します。最後に、合計が取得され、1/N が乗算されます。

%Random test data%
rm = {rand(20000,1)};
m = {rand(20000,1)};

N = length(rm);

%Converting cell arrays to matrices/double arrays%
m = cell2mat(m);
rm = cell2mat(rm);

%Vectorized approach to calculating mean square error%
MSE = (1/N)*sum((rm - m).^2);
disp(MSE);
于 2021-02-09T18:58:10.713 に答える