удалить i-й элемент из каждого поля структуры - PullRequest
1 голос
/ 03 декабря 2011

У меня есть структура с именем phonebook с различными полями: first_name, last_name, phone_number. Типичный пример:

phonebook.first_name(1) = 'Roger'
phonebook.last_name(1)= 'Maxwell'
phonebook.phone_number(1) = '+3123-231232'

Иногда мне нужно полностью удалить запись, поэтому я пишу что-то вроде:

phonebook.first_name(i) = []
phonebook.last_name(i)= []
phonebook.phone_number(i) = []

Есть ли способ удалить i-ую запись без необходимости записи каждого поля? Этакий:

phonebook.*(i) = []

Ответы [ 2 ]

1 голос
/ 03 декабря 2011

Рассматривали ли вы использование массива структуры вместо структуры из массивов?

phonebook(1) = struct('field1', 1, 'field2', 'A');
phonebook(2) = struct('field1', 2, 'field2', 'B');

Тогда легко удалить всю запись:

phonebook(1) = []

phonebook = 

    field1: 2
    field2: 'B'

Вот хороший пост, говорящий о разнице: http://blogs.mathworks.com/pick/2008/04/22/matlab-basics-array-of-structures-vs-structures-of-arrays/

0 голосов
/ 04 декабря 2011

Хочешь что-нибудь подобное?

a.b=[1 2 3];
a.c=[2 3 4];
for f=fieldnames(a)', a.(f{1})(1)=[]; end
a

a = 

    b: [2 3]
    c: [3 4]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...