Matlab: Как читать / писать существующую (1 * 2) структуру? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть (1 * 2 структура). Как я могу найти имя поля? Например, я хочу выбрать имя поля «loadP c», чтобы получить значение во второй строке. Или я должен сделать это с Аль oop? Что лучше?

Можно ли переопределить (заменить) некоторые значения новыми? Спасибо. введите описание изображения здесь

Заранее спасибо

1 Ответ

0 голосов
/ 21 апреля 2020

Вы можете использовать функцию fieldnames , чтобы получить имена полей и затем извлечь данные.

Когда вы извлекаете данные, вы можете включить правую часть инструкции в []: это позволяет хранить данные в массиве

В качестве альтернативы, вы можете напрямую указать имя поля

Возможный подход:

% Define the struct
s(1).field_a=1
s(1).field_b=2
s(1).field_c=3
s(2).field_a=10
s(2).field_b=20
s(2).field_c=30
% Get the field names
str_fields=fieldnames(s)
% Extract the data form the fields
%
% First method
%
% Data from field "field_a"
the_data_1=filed_a_data=[s(:).(str_fields{1})]
% Data from field "field_a"
%
% Second method
%
the_data_2=filed_a_data=[s(:).field_c]

Примечание в утверждении:

the_data_1=filed_a_data=[s(:).(str_fields{1})]

s(:) позволяет получить доступ ко всем элементам массива структуры

В коде:

  • определить пример (1 x 2) struct
  • с первым методом: выберите имя поля из массива str_field и сохраните данные в массиве the_data_1
  • с помощью второго метода: Напишите непосредственно имя поля и сохраните данные в массиве the_data_2

Вывод:

the_data_1 =

    1   10

the_data_2 =

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