Скажем, что у меня есть два массива ячеек, A и B, которые содержат строковые значения. Я хочу заполнить структуру S, чтобы я генерировал все возможные комбинации S.valueinA.valueinB = 1
. В настоящее время я пытаюсь выполнить это с помощью двух вложенных циклов, которые повторяют все возможные комбинации, и хотел спросить, есть ли более эффективный способ решить эту проблему в MATLAB.Использование содержимого массива ячеек для создания записей структуры
ответ
Если вы хотите создать динамические имена полей в структурах, я не вижу, как еще вы можете это сделать без двух циклов for
. Предположим, у нас есть две ячейки массива A
и B
, которые состоят из строковых записей. Для моего примера извиняюсь за строки в этих массивах заранее, поскольку я не мог придумать ничего лучшего на данный момент!
Это то, чего вы пытаетесь достичь?
S = struct();
A = {'hello', 'my', 'name', 'is', 'ray'};
B = {'i', 'am', 'doing', 'awesome'};
for idx = 1 : numel(A)
for idx2 = 1 : numel(B)
S.(A{idx}).(B{idx2}) = 1;
end
end
Это создает вложенную структуру S
таким образом, что для каждого элемента в A
, это становится поле в S
, где это поле другой структуры, которая содержит поле с именами, поступающих из всех элементов в B
.
Если отображается S
, мы получаем:
>> S
S =
hello: [1x1 struct]
my: [1x1 struct]
name: [1x1 struct]
is: [1x1 struct]
ray: [1x1 struct]
Если мы получили доступ к hello
поля из S
, получим:
>> S.hello
ans =
i: 1
am: 1
doing: 1
awesome: 1
Аналогично, если мы получили доступ к my
поля, мы получаем:
>> S.my
ans =
i: 1
am: 1
doing: 1
awesome: 1
Следовательно, i е мы хотим получить hello
поле, за которой следует am
поле, мы делаем:
>> S.hello.am
ans =
1
- 1. Использование одного массива ячеек для создания другого
- 2. Использование для создания структуры для инициализации
- 3. Просмотр содержимого и структуры массива
- 4. Использование объекта для создания структуры папки
- 5. Использование .htaccess для создания чистой структуры URL
- 6. Использование массива для создания нового массива
- 7. Использование массива ключей для создания нового массива
- 8. Использование WMI для создания записей DNS
- 9. Использование form_for для создания двух записей одновременно
- 10. Использование цикла для создания последовательных записей
- 11. Использование Html.EditorДля создания пустого для новых записей
- 12. Использование CMake для создания структуры агностической структуры платформы
- 13. Использование hcSticky для создания прокрутки содержимого
- 14. Абстрактные структуры ячеек массива в J
- 15. Отображение содержимого массива ячеек в MATLAB
- 16. Печать структуры массива без его содержимого?
- 17. Повторное использование ячеек для ячеек
- 18. Несколько записей/элементов, сгруппированных для создания новой структуры
- 19. Использование содержимого для массива весной EL
- 20. Использование * только * указатели для печати содержимого массива
- 21. Выражение для создания структуры
- 22. Если функция для содержимого ячеек
- 23. Проблем с элементами создания массива типа структуры
- 24. Использование Python-docx для обновления содержимого ячеек таблицы
- 25. Использование прототипа для создания массива с методами
- 26. Использование jquery для создания многомерного массива
- 27. Использование Arrays.asList для создания списка из массива
- 28. Использование элементов массива для создания новых массивов?
- 29. C#: Использование генератора для создания указательного массива
- 30. Использование Flood Fill Algorith для создания массива
@nkjt - лол. Большое спасибо. этот комментарий сделал мое утро. – rayryeng
@rayryeng Спасибо за ответ! Это то, чего я пытался достичь; Я пытался выяснить, был ли у Matlab более эффективный метод (так как это может занять очень много тысяч записей). – n0shadow
@mCode - Ах, я получил. Да, когда дело доходит до имен динамических полей, я не вижу, как вы могли бы это сделать без цикла 'for'. Однако, если вложенное поле состоит всего из одного числа, то я думаю, что он должен быть относительно быстрым. Я еще не проверял его, но это моя догадка. Добро пожаловать, кстати! – rayryeng