Арифметика свойств / полей в массиве объектов / структур в Matlab - PullRequest
1 голос
/ 30 марта 2012

Учитывая два массива структуры A и B с полем f1:

A = struct('f1',{1,2,3})
B = struct('f1', {4,5,6})

Вы можете присвоить содержимое полей f1 массива структуры A полям B с помощью

[B.f1] = A.f1

но я не могу понять, что делать, если вы хотите выполнить арифметику над полем, например, если вы хотите сохранить отрицание полей f1 в A в B.

[B.f1] = -A.f1

не работает, вам нужно сначала объединить элементы A, чтобы оператор работал

-[A.f1]

но тогда результатом будет вектор, который как-то нужно "развернуть", чтобы соответствовать количеству выходных аргументов.

1 Ответ

3 голосов
/ 30 марта 2012

Вы можете использовать num2cell:

tmp=num2cell(-[A.f1]);
[B.f1]=tmp{:};

Результат:

B.f1

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