Создать матрицу из нескольких повторяющихся чисел - PullRequest
0 голосов
/ 21 января 2020
EN = 10;
etable = [1,2,3,4,5,6;
4,5,6,7,8,9;
7,8,9,10,11,12;
10,11,12,13,14,15;
13,14,15,16,17,18;
16,17,18,19,20,21;
19,20,21,22,23,24;
22,23,24,25,26,27;
25,26,27,28,29,30;
28,29,30,31,32,33];

Можно ли сделать для l oop, в котором я просто изменяю значение EN, и оно автоматически создает etable? Потому что мне нужно сделать EN 50, чтобы было нехорошо писать 50 строк в etable.

. Я пытался так:

EN = 10;
c = 1:EN;
nodes = zeros(size(c',1),2);
for i = 1:length(c)
   nodes(i,1) = i;
   nodes(i,2) = i+1;
end
etable = zeros(size(c',1),6);
for i = 1:size(nodes,1)
etable(i,1) = 2*nodes(i,1)-1;
etable(i,2) = 2*nodes(i,1);
etable(i,3) = 2*nodes(i,1)+1;
etable(i,4) = 2*nodes(i,2);
etable(i,5) = 2*nodes(i,2)+1;
etable(i,6) = 2*nodes(i,2)+2;
end

1 Ответ

4 голосов
/ 21 января 2020

Вы можете использовать неявное расширение неявно (введено в MATLAB R2016b) или явно, используя MATLAB's bsxfun для создания этой матрицы:

% Parameters
EN = 10;
n = 6;
step = 3;

% Matrix (implict expansion, MATLAB >= R2016b)
etable = (0:step:EN*step-1).' + (1:n)

% Matrix (bsxfun, MATLAB < R2016b)
etable_legacy = bsxfun(@plus, (0:step:EN*step-1).', (1:n))

Для При заданном наборе параметров выходными данными являются:

etable =
    1    2    3    4    5    6
    4    5    6    7    8    9
    7    8    9   10   11   12
   10   11   12   13   14   15
   13   14   15   16   17   18
   16   17   18   19   20   21
   19   20   21   22   23   24
   22   23   24   25   26   27
   25   26   27   28   29   30
   28   29   30   31   32   33

etable_legacy =
    1    2    3    4    5    6
    4    5    6    7    8    9
    7    8    9   10   11   12
   10   11   12   13   14   15
   13   14   15   16   17   18
   16   17   18   19   20   21
   19   20   21   22   23   24
   22   23   24   25   26   27
   25   26   27   28   29   30
   28   29   30   31   32   33

Можно изменить EN (количество строк), «количество столбцов» n и / или «шаг между строками» step.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...