MATLAB で書きたい関数は次のとおりです。
myŷ
とには、それぞれとy
のインデックスを使用しています。これが私がこれまでに持っているものです:rm
m
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));
MATLAB で書きたい関数は次のとおりです。
myŷ
とには、それぞれとy
のインデックスを使用しています。これが私がこれまでに持っているものです:rm
m
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));
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);