Ваш вопрос немного неясен.Исходя из этого, я хочу создать случайную матрицу некоторого измерения, а затем вставить некоторое число, хранящееся в векторе p, в случайных местах в матрице.Надеемся, что вы можете добиться этого, используя некоторый (или весь) код, приведенный ниже.Как видите, цикл не нужен, и он автоматически заботится о том, чтобы не вставлять два числа в одно и то же положение.
%#Specify matrix dimensions
rows = 5;
cols = 8;
%#Create random matrix with values in (0,1)
M = rand(rows,cols);
%#Spesify parameters for numbers to insert and create p-vector
numbers_to_insert = 5;
number_range = [2 10];
p = randint(numbers_to_insert,1,number_range);
%#Select random locations to insert elements in p
rV = randperm(rows);
cV = randperm(cols);
%#Insert numbers into matrix by using 1 dimensional indexing
M(rV(1:numbers_to_insert)+(cV(1:numbers_to_insert)-1)*rows) = p;
Пример результата:
p = 5 5 8 9 3
rV= 1 3 4 5 2
cV= 4 3 7 5 8 2 1 6 %#Only first 5 values used
M=
0.1656 0.7482 0.1524 5.0000 0.8173 0.8001 0.1455 0.1450
0.6020 0.4505 0.8258 0.1067 0.8687 0.4314 0.1361 3.0000
0.2630 0.0838 5.0000 0.9619 0.0844 0.9106 0.8693 0.6221
0.6541 0.2290 0.9961 0.0046 0.3998 0.1818 8.0000 0.3510
0.6892 0.9133 0.0782 0.7749 9.0000 0.2638 0.5499 0.5132