Randi command for a matrix

5 views (last 30 days)
Bilal Khurshid
Bilal Khurshid on 19 Sep 2019
Commented: Walter Roberson on 20 Sep 2019
i am using a random generator for a matrix.
However the randi command is not working for matrix C with following error (Error using randi First input must be a positive scalar integer value IMAX, or two integer values [IMIN IMAX] with IMIN less than or equal to IMAX.)
clear all
clc
A = (textread('data_mat_ta01_11x5.txt'))'
size(A)
B=A/9
C=floor(B)
D=randi(C)

Answers (1)

KALYAN ACHARJYA
KALYAN ACHARJYA on 19 Sep 2019
Edited: KALYAN ACHARJYA on 19 Sep 2019
Wrong here,you read a txt file as A and Divide it by 9>>B, Is there any sense??
% Read a text file, variable name A
A = (textread('data_mat_ta01_11x5.txt'))'
size(A) % No use, you have not assigned to any variable
B=A/9
and
floor rounds each element of B to the nearest integer less than.
Regarding randi matrix generation: See the following example
%...........[3,4] reperesent the size of the required matrix
>> randi(10,[3,4]);
%........^Max element value in the matrix
ans =
9 10 3 10
10 7 6 2
2 1 10 10
Rquested you to debug the code, line by line and modify it accordingly. If you are just a beginner on Matlab, I suggested you to go through this
Good Wishes!
  2 Comments
Bilal Khurshid
Bilal Khurshid on 20 Sep 2019
Dear Kalyan
Thanks for your response.
I have to make a code for random selection of all matrix values from as assumed interval [1,A/9]
A = (textread('data_mat_ta01_11x5.txt'))' %Reads file data_mat_ta01_11x5.txt and takes values for matrix A with size 11x5
size(A) % Verifies size of matrix A, to confirm it is 11x5
B=A/9 % divides all values of matrix A by 9 to meet the interval condition A/9
C=floor(B) % Converts values of matrix B to integer value as after division some values are decimal
D=randi(C) % Command to randomly select all values of the matrix in the range [1-A/9], however it is not working, is randi command ok for this purpose? or i have to use the range command
Walter Roberson
Walter Roberson on 20 Sep 2019
You cannot pass an 11 x 5 array as the first parameter to randi().
D = arrayfun( @(c) randi([1 c]), C);

Sign in to comment.

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Products


Release

R2013a

Community Treasure Hunt

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

Start Hunting!