i have a important question!! ( function "randfixedsum" )

2 ビュー (過去 30 日間)
Brian Kim
Brian Kim 2017 年 3 月 28 日
回答済み: Roger Stafford 2017 年 3 月 28 日
i successd in create matrix 'x' from "randfixedsum"
in here, 'x' is formed 'double'. and 'x' can recreate as integer by using "round", "ceil", or "floor"
by the way,
how to create 'x' by way for 'integer' by itself?

回答 (2 件)

Roger Stafford
Roger Stafford 2017 年 3 月 28 日
I think you might prefer to use the following code rather than using randfixedsum and rounding to integers:
function R = randfixedsumint(m,n,S);
% This generates an m by n array R. Each row will sum to S, and
% all elements are all non-negative integers. The probabilities
% of each possible set of row elements are all equal.
% RAS - Mar. 4, 2017
if ceil(m)~=m|ceil(n)~=n|ceil(S)~=S|m<1|n<1|S<0
error('Improper arguments')
P = ones(S+1,n);
for in = n-1:-1:1
P(:,in) = cumsum(P(:,in+1));
R = zeros(m,n);
for im = 1:m
s = S;
for in = 1:n
R(im,in) = sum(P(s+1,in)*rand<=P(1:s,in));
s = s-R(im,in);

KSSV 2017 年 3 月 28 日
doc uint8
  2 件のコメント
KSSV 2017 年 3 月 28 日
編集済み: KSSV 2017 年 3 月 28 日
uint8 covers double to int.
x_int = uint8(x) ;



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