Cody

Problem 42858. Block average ignoring NaN values

Solution 2632450

Submitted on 30 Jun 2020 by Rafael S.T. Vieira
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

Test Suite

Test Status Code Input and Output
1   Pass
A = [1 2 3 4 5 6 7 8 NaN]; subsz = [1 3]; B = [2 5 (7+8)/2]; assert(norm(B-blknanavg(A,subsz)) < 1e-10)

2   Pass
A = [1 2 3 4 NaN 6 7 NaN 9].'; subsz = [3,1]; B = [2 5 8].'; assert(norm(B-blknanavg(A,subsz)) < 1e-10)

3   Pass
A = [1 1 1 2 NaN 2 1 NaN 1 NaN 2 NaN 3 3 3 NaN NaN 4 3 3 3 NaN 4 4]; subsz = [2 3]; B = [1 2 3 4]; assert(norm(B-blknanavg(A,subsz)) < 1e-10)

4   Pass
A = rand(100,300); A(randperm(numel(A),10)) = NaN; subsz = size(A); B = mean(A(:),'omitnan'); assert(norm(B-blknanavg(A,subsz)) < 1e-10)

5   Pass
subsz = [4,6]; B = 10*rand(10,20); A = repelem(B,subsz(1),subsz(2)); A(randperm(numel(A),10)) = NaN; assert(norm(B-blknanavg(A,subsz)) < 1e-10)

Suggested Problems

More from this Author30

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!