File Exchange

image thumbnail


version by Giuseppe Cardillo
A very compact routine to compute Fisher's exact test on a 3x3 matrix


Updated 06 Apr 2018

GitHub view license on GitHub

Fisher's exact test of 3x3 contingency tables permits calculation of precise probabilities in situation where, as a consequence of small cell frequencies, the much more rapid normal approximation and chi-square calculations are liable to be inaccurate. The Fisher's exact test involves the computations of several factorials to obtain the probability of the observed and each of the more extreme tables. Factorials growth quickly, so it's necessary use logarithms of factorials. In Matlab this is very easy using the Gammaln function. The function uses preallocation and vectorization to speed-up the computations. Actually, the function also computes the mid-P correction to make the test less conservative.

Cite As

Giuseppe Cardillo (2020). MyFisher33 (, GitHub. Retrieved .

Comments and Ratings (4)

in my PC version it is correct. Bah! I uploaded it again


line 146: you must use "<=" not "<"

i.e., the line should read:


(You want to sum across all probabilities that are less than or equal to the observed probability)

Thank you. If you need fisher onto 2x3 matrix it is on FEX:

In any case, you can use Myfisher that it is able to manage any kind of matrix


Elegant, fast, clean and accurate. Thanks!
Why not have myfisher32.m? Best wishes, B.-


inputparser; table implementation; github link

Minor bug correction

Changes in description

Actually, the function also computes the mid-P correction to make the test less conservative.

Improvements in table enumeration

Changes in help section

Speeding up using preallocation and gammaln calculation

6-fold speed up using preallocation

waitbar added

MATLAB Release Compatibility
Created with R2014b
Compatible with any release
Platform Compatibility
Windows macOS Linux