Mean square error of two matrices

How to calculate the mean square error of two matrices? How to use the inbuilt MATLAB function msc for that?The Mathworks help for mse is not clear to me.

 Accepted Answer

Do you have the Wavelet Toolbox? If so, you can use measerr(), otherwise, suppose your original matrix is X and your approximation is Xapp
X = randn(256,256);
Xapp = randn(256,256);
D = abs(X-Xapp).^2;
MSE = sum(D(:))/numel(X);

7 Comments

Is it necessary to take 256? Can I reduce it to my requirement?
It is not necessary to take 256, that was just an example.
Image Analyst
Image Analyst on 1 Apr 2013
Edited: Image Analyst on 1 Apr 2013
That was just to create some sample data. Of course X and Xapp will be your own variables of whatever size they might be. Of course they have to have the same number of rows and columns as each other or it wouldn't make sense. Note that if they are of integer type (such as uint8 images) then you'll need to cast them to double() to prevent clipping upon subtraction. And I don't think the abs() operation is necessary since you're squaring. You might also look to PSNR and SSIM (see wikipedia) to compare two matrices.
As I am comparing two matrices of voice signals, so will it create problem if I use the above randn function as it returns any random numbers!
Yes, of course. You have to realize that since I don't have your data I just have to make up an example to show you how to do it.
Thanks for helping me out sir.
For persons who still have questions about this, you can use the Frobenius norm:
A = randi(10,3);
B = randi(25,3);
MSE = norm(A-B,'fro')^2/numel(A);

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!