Using Randn with min and max matrices
15 views (last 30 days)
Show older comments
Zena Assaad
on 28 Nov 2016
Commented: Zena Assaad
on 28 Nov 2016
Hi all,
Is it possible to use randn with the min and max values being matrices?
For Example:
A = [1x28] %The numbers vary within this matrix
B = [1x28] %The numbers vary within this matrix
r = A + (B-A).*randn(500,28);
I'm trying to understand if this is mathematically possible, considering there are multiple min and max values. Will Matlab allocate each column a separate min and max value (this is what I am hoping it will do)? Or should this problem simply be tackled using a different approach?
What I am looking for is to create a random [500x28] matrix with varying min and max values that are specified in matrices A and B. I have used randn before for integer values and it has worked beautifully. I just don't know if it is mathematically correct to use it in this context. I would love some thoughts and information on the best approach to take.
Thanks in advance.
0 Comments
Accepted Answer
Walter Roberson
on 28 Nov 2016
You wrote
r = A + (B-A).*randn(500,28);
but the form you are using does not apply to randn(). randn() has infinite tails.
If you switch to
r = A + (B-A).*rand(500,28);
then that works fine in R2016b or later. In R2016a or earlier you would need
r = bsxfun(@plus, A, bsxfun(@times, B-A, rand(500,28)) );
3 Comments
Walter Roberson
on 28 Nov 2016
With the bsxfun, it would copy the per-column (A) and ((B-A)) to all of the rows
More Answers (1)
Image Analyst
on 28 Nov 2016
You could do this:
A = randi(99, 1,28) % The numbers vary within this matrix
B = randi(99, 1,28) % The numbers vary within this matrix
r = zeros(500, 28);
for col = 1 : size(A, 2)
r(:, col) = A(col) + (B(col) - A(col)) .* rand(500, 1);
end
You might want to make sure B is more than A if that's what you expect.
3 Comments
Image Analyst
on 28 Nov 2016
OK, though it can be a bit cryptic for beginners. That's why I went with something I thought would be easier for you to understand. Though if you can remember how bsxfun works, it can be handy.
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!