I am attempting to run: A = 1 - cumsum(C)/sum(C); where C is a long column vector. I receive error "??? Error using ==> cumsum CUMSUM is not supported for integer input." What does it mean?

2 件のコメント

per isakson
per isakson 2014 年 2 月 23 日
編集済み: per isakson 2014 年 2 月 23 日
The code looks ok. Make this check
which cumsum -all
what does it say? And what does
class( C )
say? And which Matlab release do you use?
Ralph
Ralph 2014 年 2 月 23 日
response to 'which cumsum -all' EDU>> which cumsum -all built-in (C:\Program Files (x86)\MATLAB\R2010a Student\toolbox\matlab\datafun\@single\cumsum) % single method
built-in (C:\Program Files (x86)\MATLAB\R2010a Student\toolbox\matlab\datafun\@double\cumsum) % double method
built-in (C:\Program Files (x86)\MATLAB\R2010a Student\toolbox\matlab\datafun\@logical\cumsum) % logical method
built-in (C:\Program Files (x86)\MATLAB\R2010a Student\toolbox\matlab\datafun\@uint8\cumsum) % uint8 method
built-in (C:\Program Files (x86)\MATLAB\R2010a Student\toolbox\matlab\datafun\@int8\cumsum) % int8 method
built-in (C:\Program Files (x86)\MATLAB\R2010a Student\toolbox\matlab\datafun\@uint16\cumsum) % uint16 method
built-in (C:\Program Files (x86)\MATLAB\R2010a Student\toolbox\matlab\datafun\@int16\cumsum) % int16 method
built-in (C:\Program Files (x86)\MATLAB\R2010a Student\toolbox\matlab\datafun\@uint32\cumsum) % uint32 method
built-in (C:\Program Files (x86)\MATLAB\R2010a Student\toolbox\matlab\datafun\@int32\cumsum) % int32 method
Response to class (C) EDU>> class(C) ans = uint8
I have Matlab R2010a

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

 採用された回答

Image Analyst
Image Analyst 2014 年 2 月 23 日
編集済み: Image Analyst 2014 年 2 月 23 日

0 投票

Try this. It works for me:
C = int32(randi(9, 1, 10)) % Array of integers.
A = 1 - cumsum(C) / sum(C)

3 件のコメント

per isakson
per isakson 2014 年 2 月 23 日
The result of the division might come as a surprise
Image Analyst
Image Analyst 2014 年 2 月 23 日
Yes, MATLAB has an unintuitive of promoting/casting variable types. If C is double, it's fine. Regardless I can't find a way to duplicate the error the Ralph posted. Perhaps he can give some code that illustrates the error.
Ralph
Ralph 2014 年 2 月 23 日
The suggestion above to use int32() provided an idea on how to proceed. i did not know how to identify what format my data was in, so the class() command helped with this. My data was uint8. Do I used double() to change the format of my data, and I got passed the cumsum error. Thanks for the assistance.

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

その他の回答 (0 件)

カテゴリ

タグ

質問済み:

2014 年 2 月 23 日

コメント済み:

2014 年 2 月 23 日

Community Treasure Hunt

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

Start Hunting!

Translated by