Сохранение размера матрицы ручки при удалении - PullRequest
0 голосов
/ 08 августа 2011

Я создал набор линий на фигуре. Дескрипторы линии занимают матрицу, созданную imline.empty(0,x). Когда я удаляю определенную строку (используя delete(.)), размер матрицы изменяется. Я хочу избежать этого, заполнив это конкретное место в матрице пустым пространством (или чем-то еще), чтобы сохранить структуру данных и размер матрицы одинаковым. Каков наилучший способ сделать это?

1 Ответ

2 голосов
/ 08 августа 2011

Опираясь на мой предыдущий ответ , рассмотрим этот пример:

lines = imline.empty(0,10);
for i=1:10
    lines(i) = imline(gca, rand(2,2));
end

Теперь скажем, что мы хотим удалить третью и последнюю строки:

До

>> whos lines
  Name       Size            Bytes  Class     Attributes

  lines      1x10               96  imline   

>> lines.isvalid
ans =
     1     1     1     1     1     1     1     1     1     1

После

>> delete( lines([3 end]) )

>> whos lines
  Name       Size            Bytes  Class     Attributes

  lines      1x10               88  imline     

>> lines.isvalid
ans =
     1     1     0     1     1     1     1     1     1     0

Таким образом, массив остается неизменным при delete -ing ...

Если вы действительно хотите удалить их записи из массива,попробуйте:

>> lines(~lines.isvalid) = [];
>> size(lines)
ans =
     1     8
...