2016-08-02 2 views
0

У меня есть матрица порядка 363 X 726. Теперь я хотел удалить последние 1394 элементов в формате столбца, чтобы я мог переставить его в матрицу 512 X 512, используя MATLAB. Проще говоря, я хочу выполнить отмену операций, замеченных в моем предыдущем вопросе: How to resize an image by adding extra pixels using matlab. Как я могу сделать это в MATLAB?Как удалить последние n элементов матрицы в matlab?

+0

Как вы решите удалить из 1394 элементов? Роу-мажор? Колонка-майор? Случайные? Произвольное? Что делать, если информация важна? – excaza

+0

Не конкретная строка или столбец, а последние 1394 элементов в матрице, почему (363 * 726 = 263538) - (512 * 512 = 262144) = 1394. Поэтому я хотел удалить последние 1394 элементов в соответствии с размерами матрицы. Эта матрица относится к изображению. Поэтому, если я удалю случайные элементы, информация будет потеряна. Конечно, мне не нужны эти последние элементы, потому что они вручную добавлены для какой-либо операции сами. @ Excaza – sai

+0

«последний» не имеет конкретное значение для массивов с более чем одним измерением, поэтому вопрос – excaza

ответ

2
A = rand(363,726);  % matrix of random elements with size 363x726 
A(end-1393:end)=[] ;  % removing last 1394 elements 
A = reshape(A,[512 512]); % Rearranging it into 512 rows and 512 columns 
+0

Спасибо @Sardar_Usama – sai

3

Предполагая, что ваша матрица вы хотите работать, называется B, вы можете просто сделать B = reshape(B(1:512*512), 512, 512);. Нет необходимости в временной переменной, и удаление последних элементов 1394 неявно с индексацией.

+0

Спасибо! @rayryeng – sai

+0

@sai Нет проблем. Всякий раз, когда вы готовы, не забудьте принять ни один из наших ответов, чтобы сообщество узнало, что вам больше не нужна помощь. Удачи! – rayryeng

Смежные вопросы