произвольно вводить точки внутри матрицы - PullRequest
0 голосов
/ 05 января 2012

Я хотел бы знать, как произвольно вводить точки внутри заданной (где указаны размеры) матрицы в Matlab.

Мысль о том, чтобы делать это, но я не уверен, Алгоритм:

1) сначала сгенерируйте матрицу указанного размера, используя rand func.

l=input('enter the length:');
b=input('enter the bth:');
g=rand(b,l)

2) затем с помощью проверки цикла для измерения.

3) взять случайное число, хранящееся в p, и ввести его в матрицу

1 Ответ

3 голосов
/ 05 января 2012

Ваш вопрос немного неясен.Исходя из этого, я хочу создать случайную матрицу некоторого измерения, а затем вставить некоторое число, хранящееся в векторе 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...