# factorial function won't take a cell argument independently of it's class (double, integer, etc)

1 回表示 (過去 30 日間)
ethan1987 2016 年 5 月 8 日

i can't calculate the factorial of a cell element (being it an array), though it is double (checked it with class funct.) and factorial doing fine with a double array... and neither it works using int16 or uint16 conversions on the cell element (called bins {1}) it simply states that "N must be a matrix of non-negative integers." and i do give it such thing.

サインインしてコメントする。

### 採用された回答

Stephen23 2016 年 5 月 9 日

This is because of your MATLAB version. Here using MATLAB 2010b:
>> factorial(uint16([3.4 2.8]))
??? Error using ==> factorial at 17
N must be a matrix of non-negative integers.
>> factorial(round([3.4 2.8]))
ans =
6 6
The second line of code actually throws an error for this case:
~isa(N,'double')
which you would have found by simply clicking on the error message link.
##### 1 件のコメント-1 件の古いコメントを表示-1 件の古いコメントを非表示
ethan1987 2016 年 5 月 9 日
ok thx!

サインインしてコメントする。

### その他の回答 (2 件)

Walter Roberson 2016 年 5 月 8 日
Could you confirm that you are calling factorial(bins{1}) ? If so what is class(bins{1})
##### 1 件のコメント-1 件の古いコメントを表示-1 件の古いコメントを非表示
ethan1987 2016 年 5 月 8 日
yes that is what i said...the factorial of a cell element called bins{1}

サインインしてコメントする。

Image Analyst 2016 年 5 月 8 日
This works just fine:
% Make a 1-by-10 vector of random integers in the range 1-9
dblBins = randi(9, 1,10)
% Stick into a 1 by 2 cell array.
bins = {dblBins, dblBins}
% Extract the contents of the first cell and take it's factorial
f = factorial(bins{1})
Chances are you have non-integers in there or negative numbers.
##### 18 件のコメント16 件の古いコメントを表示16 件の古いコメントを非表示
John D'Errico 2016 年 5 月 9 日
No problem in the least here.
factorial(uint16([3.4 2.8]))
ans =
6 6
Note that the result is a uint16 number. So it is trivial to generate an overflow.
factorial(uint16(9.3))
ans =
65535
And...
factorial(uint16(bins{1}))
ans =
Columns 1 through 21
65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535
Columns 22 through 42
65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535 65535
Columns 43 through 50
65535 65535 65535 65535 65535 65535 65535 65535
Perhaps you need to tell us which release of MATLAB you are trying this with?
ethan1987 2016 年 5 月 9 日
oh, of course...i didn't get to that part and realized that, hehe... I'm using matlab 7.12 R2011a

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeNumeric Types についてさらに検索

### Community Treasure Hunt

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

Start Hunting!

Translated by