как создать октавную матрицу и заполнить ее значением по умолчанию / начальным значением - PullRequest
2 голосов
/ 19 января 2020

Я пытаюсь найти кратчайший способ кодирования октавной матрицы размером m x n и заполнить ее значением по умолчанию / начальным значением, все в одной команде.

как это можно сделать?

Ответы [ 2 ]

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

Как правило, если вы заполняете его нулями, тогда zeros([M,N]).
Если вы заполняете его нулями, ones([M,N])

Для любого другого значения k есть много опций, например.

X = k * ones(M,N);
X = repmat( k, M, N);
X = k(ones(M,N));

Wrt, ответ Дрора, это также хороший способ, с оговорками, что а) он требует присваивания (тогда как все вышеперечисленное можно использовать в операции на месте, без необходимости присваивать временную переменную) и б) вы должны быть уверены, что X еще не существует в вашем рабочем пространстве, в противном случае вы можете не получить то, что, как вы думаете, вы получаете. Если вы действительно хотите быть уверенным, вам сначала нужно очистить X;

clear X; X(1:M, 1:N) = k;

Я уверен, что есть и другие способы. Все вышеперечисленное имеет разные ориентиры; Раньше был совет, которого следует избегать для скорости, если вы делаете это несколько раз внутри для l oop (например, repmat работает медленнее). Не могу вспомнить детали сейчас.

1 голос
/ 19 января 2020

только в одной строке кода -

для матрицы X с размерами mxn и значением по умолчанию v:

X(1:m,1:n)=v

пример (для матрицы 2x3 со значением по умолчанию 5):

X(1:2,1:3)=5

(За комментарий @Daniel вы можете добавить префикс вышеупомянутой команды создания к:

clear X )
...