заполнение нулями матрицы - PullRequest
4 голосов
/ 04 марта 2011

У меня матрица 16X16. Я должен добавить его к матрице 256X256. Может кто-нибудь помочь мне, как сделать эту матрицу 16X16 в 256X256, заполнив оставшиеся нулями?

Ответы [ 5 ]

10 голосов
/ 04 марта 2011

Matlab автоматически дополняется нулями, если вы назначаете что-либо элементу за пределами исходного размера.

>> A = rand(16, 16);
>> A(256, 256) = 0;
>> size(A)
ans =
   256   256
3 голосов
/ 29 июня 2011

Используйте функцию padarray в Matlab. Используйте Справку, чтобы узнать его параметры

3 голосов
/ 04 марта 2011

Итак, это на самом деле не отвечает на ваш вопрос, но я думаю, что это отвечает сценарию использования, который вы дали. Предполагая, что вы хотите добавить меньшую матрицу в верхний левый угол большой матрицы:

big = ones(256, 256);
small = ones(16, 16);
big(1:16, 1:16) = big(1:16, 1:16) + small;

Это позволяет избежать дополнительных 65000 удваиваний, которые вам придется делать, если вы измените размер с 16x16 до 256x256.

3 голосов
/ 04 марта 2011
padded = zeros(256,256);
data = rand(16,16);
padded(1:16,1:16) = data;
0 голосов
/ 04 марта 2011

Первое, что нужно сделать, - это создать выходную матрицу 256x256, предполагая, что вы хотите сохранить исходную матрицу 256x256 без изменений. Затем переместите значения входной матрицы 256x256 в выходную матрицу. Следующим шагом является добавление элементов 16x16 к выходной матрице.

Но прежде чем кто-то сможет ответить на этот вопрос, вам нужно объяснить, как матрица 16x16 соотносится с матрицей 256x256. Другими словами, будет ли первый элемент (0,0) матрицы 16x16 добавляться к первому элементу (0,0) матрицы 256x256? Как насчет второго элемента (0, 1) - знаете ли вы, куда это будет добавлено? Как насчет элемента (1, 0) матрицы 16x16 - к какому элементу матрицы 256x256 это добавляется? Как только вы поймете это, вы сможете просто закодировать несколько циклов для добавления в каждый элемент матрицы 16x16 к соответствующему элементу выходной матрицы 256x256.

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