Cellfun for mean squared error
3 ビュー (過去 30 日間)
古いコメントを表示
I have a 450x2 cell data structure called data, with each cell containing 10000 x 1 Doubles.
I want to calculate the mean squared error (via the immse function) between for each row in the cell, i.e. immse(data{i,1},data{i,2}) with i indicating one of the 450 rows. Then I want to add the calculated mean squared error to a variable called data_sum (My overall goal is to calculate the average mean squared error).
So far, I am solving this by looping over data:
data_sum = 0;
for p = 1:size(data,1)
data_sum = data_sum + immse(data{p,1},data{p,2});
end
data_avg = data_sum / size(data,1);
I want to optimize my code and use cellfun instead. So far I have tried the following:
C = cellfun(@immse, data{:,1}, data{:,2}, 'UniformOutput', false);
However, this gives me the error:
Error using cellfun
Input #2 expected to be a cell array, was double instead.
I read online that I should convert double to cell to solve this problem. Since I am using cellfun because, well, I am applying it to a cell, it makes me assume that I am indexing data in a wrong way, because otherwise I wouldn't have to convert it to a cell first. Or should I be using a different function than cellfun?
2 件のコメント
Matt J
2021 年 5 月 23 日
cellfun will not make the code run faster. It will just reduce the number of lines of code.
採用された回答
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Data Type Conversion についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!