Или в матлабе: Операторы MATLAB и специальные символы

Содержание

Documentation Home


О проекте

Здесь представлена документация MATLAB на русском языке. Это обширный ресурс, который служит ускорению инновационного развития технологий в русскоговорящих странах и освоению новых знаний русскоязычными студентами, преподавателями и инженерами.

Перевод осуществляется автоматически с использованием системы ПРОМТ. Инженеры ЦИТМ Экспонента провели первоначальную работу по настройке тысяч тонких параметров алгоритма перевода, словарей, препроцессора и памяти перевода, чтобы системно разрешить огромный объем трудностей машинного перевода.

Этот проект развивается и улучшается с Вашей помощью. Вы можете предлагать лучший вариант перевода, и Ваши исправления станут видны другим пользователям после одобрения модератором.

В системе учитывается мнение большого и разнопрофильного профессионального сообщества инженеров и ученых.

Качественные и принятые модератором исправления будут реализованы в словаре и памяти машинного перевода так, чтобы каждый раз в других местах или в следующем релизе документации системно учитывалось Ваше предложение.

∑ Ваш рейтинг в сообществе Экспонента растет с количеством внесенных в память перевода исправлений.

“Документация” это проект сообщества Экспонента. Каждый релиз содержит:

  • Более 150 000 страниц локализованной технической документации
  • 1.8 Гб текста и 3.5 Гб графических пояснений
  • Более 10 000 примеров кода

По вопросам поддержки и коммерческого использования обращайтесь в ЦИТМ Экспонента.

Предыдущие релизы

Вы можете просмотреть документацию предыдущих (архивных) релизов MATLAB. Обратите внимание, что внесение правок в перевод архивных релизов невозможно.

MATLAB R2021a

MATLAB R2020b

MATLAB R2020a

MATLAB R2019b

MATLAB R2019a

MATLAB R2018b

Логические операторы MatLab

Логические операторы и соответствующие им функции служат для реализации поэлементных логических операций над элементами одинаковых по размеру массивов (табл. 8.3).

Таблица 8.3. Логические операторы и функции MATLAB

Работа операторов поясняется приведенными ниже примерами:

Обратите внимание, что аргументами логических операторов могут быть числа и строки. При аргументах-числах логический нуль соответствует числовому нулю, а любое отличное от нуля число воспринимается как логическая единица. Для строк действует уже отмеченное правило — каждый символ строки представляется своим ASCII-кодом.

Логическое И (AND) &

Логическое ИЛИ (OR) |

Логическое НЕ (NOT) ~

Исключающее ИЛИ (EXCLUSIVE OR)

Верно, если все элементы вектора равны нулю

Верно, если все элементы вектора не равны нулю

MATLAB – Операторы – CoderLessons.com

Оператор — это символ, который указывает компилятору выполнять определенные математические или логические манипуляции. MATLAB предназначен для работы преимущественно с целыми матрицами и массивами. Следовательно, операторы в MATLAB работают как со скалярными, так и нескалярными данными. MATLAB допускает следующие виды элементарных операций —

  • Арифметические Операторы
  • Операторы отношений
  • Логические Операторы
  • Побитовые операции
  • Операции над множествами

Арифметические Операторы

MATLAB допускает два различных типа арифметических операций —

  • Матричные арифметические операции
  • Массив арифметических операций

Матричные арифметические операции аналогичны определенным в линейной алгебре. Операции с массивами выполняются поэлементно, как в одномерном, так и в многомерном массиве.

Матричные операторы и операторы массива дифференцируются символом точки (.). Однако, поскольку операция сложения и вычитания одинакова для матриц и массивов, оператор одинаков для обоих случаев. Следующая таблица дает краткое описание операторов —

Показать примеры

Sr.No. Оператор и описание
1

+

Дополнение или унарный плюс. A + B добавляет значения, хранящиеся в переменных A и B. A и B должны иметь одинаковый размер, если только один не является скаляром. Скаляр можно добавить в матрицу любого размера.

2

Вычитание или унарный минус. AB вычитает значение B из A. A и B должны иметь одинаковый размер, если только он не является скаляром. Скаляр можно вычесть из матрицы любого размера.

3

*

Матричное умножение.

C = A * B — линейное алгебраическое произведение матриц A и B. Точнее,

Для нескалярных A и B число столбцов в A должно быть равно количеству строк в B. Скаляр может умножить матрицу любого размера.

4

. *

Умножение массивов. A. * B — это поэлементное произведение массивов A и B. A и B должны иметь одинаковый размер, если только один из них не является скаляром.

5

/

Косая черта или матрица правого деления. B / A примерно такой же, как B * inv (A). Точнее, B / A = (A ‘\ B’) ‘.

6

./

Массив правого деления. A./B — матрица с элементами A (i, j) / B (i, j). A и B должны иметь одинаковый размер, если только один из них не является скаляром.

7

\

Обратная косая черта или матрица левого деления. Если A — квадратная матрица, A \ B — примерно то же самое, что inv (A) * B, за исключением того, что она вычисляется другим способом. B — это матрица с элементами A (i, j) степени B (i, j). A и B должны иметь одинаковый размер, если только один из них не является скаляром.

11

Матрица транспонировать. A ‘- линейная алгебраическая транспонирование A. Для комплексных матриц это комплексная сопряженная транспонирование.

12

«.

Массив транспонировать. A.» это транспонирование массива A. Для сложных матриц это не связано с сопряжением.

+

Дополнение или унарный плюс. A + B добавляет значения, хранящиеся в переменных A и B. A и B должны иметь одинаковый размер, если только один не является скаляром. Скаляр можно добавить в матрицу любого размера.

Вычитание или унарный минус. AB вычитает значение B из A. A и B должны иметь одинаковый размер, если только он не является скаляром. Скаляр можно вычесть из матрицы любого размера.

*

Матричное умножение. C = A * B — линейное алгебраическое произведение матриц A и B. Точнее,

Для нескалярных A и B число столбцов в A должно быть равно количеству строк в B. Скаляр может умножить матрицу любого размера.

. *

Умножение массивов. A. * B — это поэлементное произведение массивов A и B. A и B должны иметь одинаковый размер, если только один из них не является скаляром.

/

Косая черта или матрица правого деления. B / A примерно такой же, как B * inv (A). Точнее, B / A = (A ‘\ B’) ‘.

./

Массив правого деления. A./B — матрица с элементами A (i, j) / B (i, j). A и B должны иметь одинаковый размер, если только один из них не является скаляром.

\

Обратная косая черта или матрица левого деления. Если A — квадратная матрица, A \ B — примерно то же самое, что inv (A) * B, за исключением того, что она вычисляется другим способом. B — это матрица с элементами A (i, j) степени B (i, j). A и B должны иметь одинаковый размер, если только один из них не является скаляром.

Матрица транспонировать. A ‘- линейная алгебраическая транспонирование A. Для комплексных матриц это комплексная сопряженная транспонирование.

«.

Массив транспонировать. A.» это транспонирование массива A. Для сложных матриц это не связано с сопряжением.

Операторы отношений

Реляционные операторы также могут работать как со скалярными, так и с нескалярными данными. Реляционные операторы для массивов выполняют поэлементное сравнение двух массивов и возвращают логический массив одинакового размера с элементами, установленными в логическое 1 (истина), где отношение истинно, и элементами, установленными в логическое 0 (ложь), где оно не.

В следующей таблице показаны реляционные операторы, доступные в MATLAB.

Показать примеры

Sr. No. Оператор и описание
1

<

Меньше, чем

2

<=

Меньше или равно

3

>

Лучше чем

4

> =

Больше или равно

5

==

Равно

6

~ =

Не равно

<

Меньше, чем

<=

Меньше или равно

>

Лучше чем

> =

Больше или равно

==

Равно

~ =

Не равно

Логические Операторы

MATLAB предлагает два типа логических операторов и функций —

  • Поэлементный — Эти операторы работают с соответствующими элементами логических массивов.

  • Короткое замыкание — эти операторы работают со скалярными и логическими выражениями. B = 0011 0001

    ~ A = 1100 0011

    MATLAB предоставляет различные функции для побитовых операций, таких как «побитовое и», «побитовое или» и «побитовое не», операция сдвига и т. Д.

    В следующей таблице приведены часто используемые побитовые операции —

    Показать примеры

    функция Цель
    Битанд (а, б) Побитовое И целых чисел А и В
    bitcmp (а) Побитовое дополнение
    BITGET (а, позы) Получить бит в указанной позиции pos , в целочисленном массиве a
    битор (а, б) Побитовое ИЛИ целых чисел a и b
    bitset (a, pos) Установить бит в определенном месте поз
    битное смещение (а, к) Возвращает смещение влево на k бит, что эквивалентно умножению на 2 k . Отрицательные значения k соответствуют сдвигу битов вправо или делению на 2 | k | и округление до ближайшего целого числа в сторону отрицательного бесконечного. Все биты переполнения усекаются.
    битксор (а, б) Побитовое XOR целых чисел a и b
    swapbytes Порядок замены байт

    Операции над множествами

    MATLAB предоставляет различные функции для операций над множествами, такие как объединение, пересечение и тестирование для множества множеств и т. Д.

    В следующей таблице приведены некоторые часто используемые операции над множествами:

    Показать примеры

    пересекаются (А, В)

    Установить пересечение двух массивов; возвращает значения, общие для A и B. Возвращаемые значения находятся в отсортированном порядке.

    пересекаются (A, B, ‘строки’)

    Обрабатывает каждую строку A и каждую строку B как отдельные объекты и возвращает строки, общие как для A, так и для B. Строки возвращенной матрицы расположены в отсортированном порядке.

    IsMember (А, В)

    Возвращает массив того же размера, что и A, содержащий 1 (true), где элементы A находятся в B. В других местах он возвращает 0 (false).

    IsMember (A, B, ‘строк’)

    Обрабатывает каждую строку A и каждую строку B как отдельные объекты и возвращает вектор, содержащий 1 (true), где строки матрицы A также являются строками B. В другом месте возвращается 0 (false).

    issorted (А)

    Возвращает логическое 1 (истина), если элементы A расположены в отсортированном порядке, и логическое 0 (ложь) в противном случае. Вход A может быть вектором или массивом строк размером 1 на 1 или 1 на N. A считается отсортированным, если A и выходные данные сортировки (A) равны.

    issorted (A, ‘row’)

    Возвращает логическое 1 (истина), если строки двумерной матрицы A расположены в отсортированном порядке, и логическое 0 (ложь) в противном случае. Матрица A считается отсортированной, если A и выходные данные sortrows (A) равны.

    setdiff (А, В)

    Устанавливает разницу двух массивов; возвращает значения в A, которых нет в B. Значения в возвращенном массиве расположены в отсортированном порядке.

    setdiff (А, В, ‘строк’)

    Обрабатывает каждую строку A и каждую строку B как отдельные объекты и возвращает строки из A, которых нет в B. Строки возвращенной матрицы расположены в отсортированном порядке.

    Опция ‘rows’ не поддерживает массивы ячеек.

    setxor

    Устанавливает эксклюзивное ИЛИ из двух массивов

    союз

    Устанавливает объединение двух массивов

    уникальный

    Уникальные значения в массиве

    Matlab Операторы | Различные типы операторов Matlab

    Matlab Operators

    В этой статье мы поговорим об операторах Matlab. Итак, начнем

    Первый вопрос, который должен быть поставлен перед нами: «Что такое оператор?

    Таким образом, оператор – это символ в компьютерном программировании и математике, который используется для выполнения определенных математических или логических операций, или вы также можете определить его как символ, представляющий действие, например, «+» – это символ, который представляет сложение, аналогично логическим операторам используется для работы с истинными / ложными значениями.

    Еще один важный факт, о котором следует помнить, это операторы в MATLAB, работающие как со скалярными, так и нескалярными данными.

    MATLAB предлагает следующий тип операторов:

    • Арифметические операторы
    • Реляционные операторы
    • Логические операторы
    • Битовые операторы
    • Операторы множества

    1. Арифметические операторы

    Matlab предоставляет два типа арифметических операторов

    • Матричные арифметические операторы
    • Массив арифметических операторов

    Как указывают два вышеупомянутых типа, арифметические операторы, используемые с одним или несколькими операндами, поскольку массивы являются арифметическими операторами массива, а с одним или несколькими операндами в качестве матрицы – арифметический матричный оператор. Разница между ними заключается в использовании символа (.) Вместе с оператором в случае арифметических операторов Array.

    • Оператор сложения (+): этот оператор используется для добавления двух значений, как следует из названия. Несколько вещей, которые мы должны помнить при использовании этого, что оба значения должны быть одного размера, если только одно из них не является скалярным.
    • Оператор вычитания (-): этот оператор используется для вычитания двух значений, как следует из названия. Несколько вещей, которые мы должны помнить при использовании этого, что оба значения должны быть одного размера, если только одно из них не является скалярным.
    • Умножение матриц: если C = A * B, то C является линейным алгебраическим произведением A и B. Если оба операнда не являются скалярными, то эта операция может произойти, только если число столбцов в A равно числу строк в B.
    • Умножение массива (. *): Это поэлементное умножение двух массивов, например, для C = A. * B, и оба A и B должны иметь одинаковый размер.
    • Матрица правого деления (/): например, B / A примерно такой же, как B * inv (A), где B и A – две матрицы.
    • Массив с правым делением (. P является матрицей X для степенной матрицы, если они оба не являются скалярными. Оба должны иметь одинаковый размер.
    • Транспонирование матрицы (‘): если A является матрицей, то A’ будет ее линейной алгебраической транспонированием, а если A является комплексным, то A ‘будет комплексным сопряженным транспонированием.
    • Транспонирование массива (. ‘): Если A – массив, то A.’ является транспонированием A, но для комплексного массива A нет комплексного сопряжения типа транспонирования матрицы.

    2. Операторы отношений

    Операторы этих типов могут работать как со скалярными, так и с нескалярными данными. Как следует из названия, он находит отношение между каждым элементом двух массивов и, если отношение существует, возвращает true или иначе false. Оператор возвращает массив одинакового размера со значениями true и false в зависимости от результата операции.

    • <Менее чем
    • <= Меньше чем равно
    • > Больше чем
    • > = Больше или равно
    • == равно
    • ~ = Не равно

    3.

    Q 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1

    Интересно, что MATLAB предоставляет различные функции для побитовых и побитовых или побитовых операций, а не операций сдвига и т. Д.

    Matlab предоставляет следующие побитовые операторы

    • bit and (a, b) – Побитовое И целых чисел a и b
    • bitmap (a) – Побитовое дополнение
    • bitget (a, pos) – Получить бит в указанной позиции, в массиве
    • bitset (a, pos) – установить бит в указанном месте
    • bitShift (a, k) – это эквивалентно умножению на 2 k. Поэтому, если k отрицательно, оно сдвигается вправо, а если k положительно, то сдвигается влево.
    • bitor (a, b) – битовое XOR целых чисел a и b

    5.

    Операторы Сета

    MATLAB предоставляет различные операторы множеств, такие как объединение, пересечение и т. Д. Ниже приведен список операторов.

    • Пересечение (A & B): используется для пересечения A и B и возвращает общие значения A и B в отсортированном порядке.
    • пересечение (A & B, «строки»): возвращает строки, общие для A и B.
    • ismember (A, B): возвращает массив размера A с 1 для всех элементов A, найденных в B, или же ни для одного.
    • Issorted (A): возвращает 1, если элементы отсортированы, и 0, если нет.
    • union : устанавливает объединение двух массивов
    • unique: дает уникальные значения в массиве.

    Рекомендуемые статьи

    Это было руководство для операторов Matlab. Здесь мы обсудили различные типы операторов Matlab, такие как арифметические, реляционные, логические, побитовые и операторы множеств. Вы также можете посмотреть следующую статью, чтобы узнать больше.

    1. Матлаб и Октава
    2. MATLAB Интервью Вопросы
    3. Разница между Python и Matlab
    4. Топ 15 видов использования Matlab

    Операторы и операции Matlab | Piter Melnikov

    Оператор – это символ или символическая конструкция, который указывает компилятору выполнять определенную операцию. MATLAB допускает следующие виды элементарных операций:
    – Арифметические операторы.
    – Операторы отношений.
    – Логические операторы.
    – Операторы управления.
    Арифметические операторы Matlab рассмотрены в статье.
    Заметим, что каждому оператору Matlab соответствует определенная функция. Далее приведены различные операторы, соответствующие им функции и описания.

    Операторы отношений

    Логические операторы

    MATLAB имеет два типа логических операторов и функций:
    – Поэлементный. Такие операторы работают с соответствующими элементами логических массивов.
    – Короткое замыкание. Такие операторы работают со скалярными и логическими выражениями.

    Приоритет операций
    При одновременном использовании в выражении логических, арифметических операций и операций сравнения следует учитывать приоритет операций. Он следующий:
    1. Логические операторы.
    2. Логическая операция ~ .
    3. Арифметические операции в соответствии со своим приоритетом.
    4. Операции отношения.
    5. Логическая операция «И» – &.
    6. Логическая операция «ИЛИ» – |.

    Операторы управления

    Оператор условия

    Для записи условий в М-языке MATLAB используется оператор If. Существуют две разновидности оператора If обычная и расширенная. Обычная форма If имеет синтаксис подобный оператору If в языке Basic:

    If условие
    блок инструкций_1
    else
    блок инструкций_2
    end

    Синтаксис расширенного оператора If:
    If условие_1
    блок инструкций_1
    elseif условие_2
    блок инструкций_2
    elseif условие n
    блок инструкций_n
    else
    блок инструкций
    end

    Оператор выбора SWITCH (переключатель)

    Оператор SWITCH
    Этот оператор выполняет роль переключателя. При получении некоторой переменной какого -либо значения, равного значению определенной константы, он совершает переключение на выполнение нужного блока инструкций. Оператор имеет следующий синтаксис:
    switch expr case
    case_expr,
    <операторы_1>
    case {case_expr1, case_expr2, case_expr3,…}
    <операторы_2>

    otherwise,
    <операторы>
    end
    где :
    expr – переменная, значение которой проверяется на равенство тем или иным константам;
    case_expr – константы, с которым сравнивается значение переменной; otherwise – ключевое слово, для выполнения операторов, при всех ложных условиях.

    Пример. Требуется создать программу, которая выводит оценку по итогам набранного количества баллов. Для решения таких задач удобнее пользоваться условным оператором switch.
    Код скрипта М-файла может быть записан как на рис. 1.

    Рис 1.

    Рис 1.

    Операторы цикла

    Оператор for … end

    Цикл for … end применяют в тех случаях, когда заранее известно число повторений цикла. Синтаксис:

    for x = xn: hx: xk
    операторы
    end

    где:
    – х – имя переменной – счетчика цикла;
    – xn – начальное значение счетчика цикла;
    – xk – конечное значение счетчика цикла;
    – hx – шаг приращения счетчика цикла. Если шаг цикла равен 1, то hx можно опустить.
    Для досрочного выхода из цикла служит оператор break.
    Пример. Требуется вычислить четвертый член геометрической прогрессии. Код скрипта М-файла для решения задачи может быть записан как на рис. 2.

    Рис. 2.

    Рис. 2.

    Когда количество циклов заранее не известно, но известно условие завершения цикла применяется цикл while.
    Синтаксис оператора while:
    while условие
    <операторы>
    end
    Пример. Требуется вычислить четвертый член геометрической прогрессии.
    Код скрипта М-файла для решения задачи может быть записан как на рис. 3.

    Рис. 3.

    Рис. 3.

    Логические операции с коротким замыканием – Логические операторы MATLAB: Short-Circuit && ||

    При логическом замыкании второй операнд, expr2 , оценивается только тогда, когда результат не полностью определяется первым операндом, expr1 .

    Благодаря свойствам логических И и ИЛИ результатом логического выражения является иногда полностью определяется перед оценкой всех условий. Логический Оператор и возвращает логический 0 ( false ), если хотя бы одно условие в выражении ложный.Логический оператор или возвращает логический 1 ( true ) если хотя бы одно условие в выражение верно. Когда вычисление логического выражения завершается раньше встречая одно из этих значений, говорят, что выражение имеет короткозамкнутый .

    Например, в выражении A && B MATLAB ® вообще не оценивает условие B , если условие Ошибка .Если A ложно, то значение B не меняет результат операции.

    При использовании поэлементно и и | операторы в контексте , если или , а выражение цикла (и только в этом контексте), они используют короткое замыкание для оценки выражений.

    Примечание

    Всегда используйте && и || операторы, чтобы включить оценку короткого замыкания.Использование и и | Операторы для короткого замыкания могут привести к неожиданным результатам. результаты, когда выражения не являются логическими скалярами.

    Как именно работает логика «ИЛИ» в Matlab.

    Получение неправильных ответов. –

    Чтобы расширить:

    Операторы сравнения MATLAB имеют более высокий приоритет, чем “|” и “||” и операторы “&” и “&&”. Выражение

    , которое будет оцениваться как

    (‘D’ == ‘A’) | (“С”) | (‘I’)

    Часть (‘D’ == ‘A’) будет ложной.Часть (‘C’) такая же, как неявный тест (‘C’ ~= 0), так что это правда. or(false,true) истинно, поэтому выражение в целом становится истинным.

    Сравнение и логические операторы MATLAB никогда не имеют неявных “цепочек”. В MATLAB неправильно писать

    , ожидая, что «D» будет проверено против «A», «C» или «I».

    Сравнение MATLAB и логические операторы векторизованы. Вы можете написать

    , что будет равно [false, false, false].Однако, если бы у вас было это в условии «если», тогда тест был бы эквивалентен

    ‘D’ == ‘A’ & ‘D’ == ‘C’ и ‘D’ == ‘I’

    , который должно быть ложным, потому что никакое значение не может быть одновременно равно трем значениям. В условии «если» результат не считается истинным, если все значения в логическом условии не считаются истинными, что эквивалентно

    all(‘D’ == [‘A’, ‘C’, ‘I’ ])

    Чтобы получить эквивалент проверки, чтобы увидеть, выполняется ли хотя бы одно из них, вы должны специально закодировать вызов any()

    any(‘D’ == [‘A’, ‘C’, ‘I’ ])

    Вы могли заметить, что [‘A’, ‘C’, ‘I’] совпадает с ‘ACI’, так что да, вышеприведенная строка кода такая же, как

    Помните, что в MATLAB строки – это именно то же, что и вектор-строка символов, и применяются все операции вектор-строки, так же, как если бы вы тестировали

    . Если вы хотите рассматривать строку как отдельный объект, а не как вектор-строку символов, вам нужно использовать strcmp()

    strcmp(‘D’, ‘A’) | strcmp(‘D’, ‘C’) | strcmp(‘D’, ‘I’)

    или сокращенно

    strcmp(‘D’, {‘A’, ‘C’, ‘I’})

    Здесь {‘A’, ‘C’, ‘I’} не то же самое, что [‘A’, ‘C’, ‘I’] и, следовательно, не то же самое, что ‘ACI’

    Лично я больше склонен кодировать с помощью ismember(), чем с помощью strcmp()

    ismember(‘D’, {‘A’, ‘C’, ‘I’})

    Элементы массива, являющиеся членами заданного массива

    Массив запросов в виде числового массива, логического массива, массива символов, массив строк, массив категорий, массив дат и времени, массив длительностей, массив ячеек векторов символов, таблицы или расписания.Если вы укажете 'строки' опция, A и B должен иметь одинаковое количество столбцов.

    A должен принадлежать к тому же классу, что и B со следующими исключениями:

    • логический , символьный и все числовые классы могут сочетаться с double массивы.

    • Массивы ячеек символьных векторов могут комбинироваться с символьными массивами или строковые массивы.

    • Категориальные массивы можно комбинировать с символьными массивами, массивами ячеек векторов символов или массивов строк.

    • Массивы даты и времени можно комбинировать с массивами ячеек символа даты векторов или векторов символов одной даты.

    Существуют дополнительные требования для A и B на основе типа данных:

    • Если A и B оба являются порядковыми категориальные массивы, они должны иметь одинаковые наборы категорий, включая их порядок. Если ни A , ни B являются порядковыми, они могут не совпадать наборы категорий, а сравнение выполняется с помощью названия категорий.

    • Если A — это таблица или расписание, она должна иметь те же имена переменных, что и B (кроме порядка). За таблицы, имена строк игнорируются, так что две строки, имеющие одинаковые значения, но разные имена считаются равными.Для расписания, учитывается время строк, так что две строки, которые имеют одинаковые значения, но разное время, не считаются равными.

    • Если A и B являются датой и временем массивы, они должны быть согласованы друг с другом в том, укажите часовой пояс.

    Для текстовых входов ismember обычно не игнорирует конечные пробелы в символьных векторах, массивах ячеек из символьных векторов и массивах строк.Однако есть несколько случаев, когда ismember игнорирует конечные пробелы:

    • Если A является массивом символов, а B является массивом ячеек из символьных векторов, то является элементом , игнорирующим конечные пробелы в массиве символов.

    • Когда указана опция 'rows' , ismember игнорирует конечные пробелы в символьных векторах и символьных массивах.

    A также может быть объектом со следующими методами класса:

    Методы класса объекта должны быть согласованы друг с другом.Эти объекты включают в себя разнородные массивы, производные от одного и того же корневого класса. Например, . может быть массивом дескрипторов графики. объекты.

    логических операторов: Elementwise & | ~ (функции MATLAB)

    логические операторы: поэлементно & | ~ (функции MATLAB)
    Справочник по функциям MATLAB    
    Логические операторы: поэлементно & | ~

    Поэлементные логические операции над массивами

    Синтаксис

    Описание

    Символы и , | и ~ являются логическими операторами массива И , ИЛИ и НЕ .Они работают с массивами поэлементно, где логическое 0 представляет false , а логическое 1 или любой ненулевой элемент представляет true . Логические операторы возвращают логический массив с элементами, установленными на 1 ( true ) или 0 ( false ), в зависимости от ситуации.

    Оператор и выполняет логические операции И , оператор | Оператор выполняет логическое ИЛИ , а ~A дополняет элементы A .Функция xor(A,B) реализует исключительную операцию ИЛИ . Таблица истинности для этих операторов и функций показана ниже.

    Входы
    и
    или
    не
    xor
    А
    Б
    А и Б
    А | Б

    xor(A,B)
    0
    0
    0
    0
    1
    0
    0
    1
    0
    1
    1
    1
    1
    0
    0
    1
    0
    1
    1
    1
    1
    1
    0
    0

    Приоритет логических операторов по отношению друг к другу:

    Оператор
    Эксплуатация
    Приоритет
    ~
    НЕ
    Самый высокий
    и
    Поэлементно И

    |
    Поэлементно ИЛИ

    &&
    Короткое замыкание И

    ||
    Короткое замыкание ИЛИ
    Самый низкий

    Примечания

    MATLAB всегда дает оператору и приоритет над | оператор. Хотя MATLAB обычно вычисляет выражения слева направо, выражение a|b&c оценивается как a|(b&c) . Рекомендуется использовать круглые скобки, чтобы явно указать предполагаемый приоритет операторов, содержащих комбинации и и | .

    Эти логические операторы имеют эквиваленты функций М-файла, как показано.

    Логическая операция
    Эквивалентная функция
    А и Б
    и(А,В)
    А | Б
    или (А, В)

    не(А)

    Примеры

    Этот пример показывает логическое ИЛИ элементов в векторе u с соответствующими элементами в векторе v :

    см. Также

    Все , любой , Найти , логика , XOR , TRUE , FALSE

    Логические операторы, короткое замыкание, && , ||

    Реляционные операторы < , <= , > , >= , == , ~=


       логический   Логические операторы: короткое замыкание && ||

    © 1994-2005 The MathWorks, Inc.


    Логические операторы, поэлементно & | ~ (функции MATLAB)

    Логические операторы, поэлементно & | ~ (функции MATLAB)
    Справочник по функциям MATLAB    
    Логические операторы, поэлементные & | ~

    Поэлементные логические операции над массивами

    Синтаксис

    Описание

    Символы и , | и ~ являются логическими операторами массива И , ИЛИ и НЕ . Они работают с массивами поэлементно, где 0 представляет логическую ложь ( F ), а все, что не равно нулю, представляет логическую истину ( T ). Логические операторы возвращают логический массив с элементами, для которых установлено значение true ( 1 ) или false ( 0 ), в зависимости от ситуации.

    Оператор и выполняет логические операции И , оператор | Оператор выполняет логическое ИЛИ , а ~A дополняет элементы A .Функция xor(A,B) реализует исключительную операцию ИЛИ . Таблица истинности для этих операторов и функций показана ниже.

    Входы
    и
    или
    не
    xor
    А
    Б
    А и Б
    А | Б

    xor(A,B)
    0
    0
    0
    0
    1
    0
    0
    1
    0
    1
    1
    1
    1
    0
    0
    1
    0
    1
    1
    1
    1
    1
    0
    0

    Приоритет логических операторов по отношению друг к другу:

    Оператор
    Эксплуатация
    Приоритет
    ~
    НЕ
    Самый высокий
    и
    Поэлементно И

    |
    Поэлементно ИЛИ

    &&
    Короткое замыкание И

    ||
    Короткое замыкание ИЛИ
    Самый низкий

    Примечания

    MATLAB всегда дает оператору и приоритет над | оператор. Хотя MATLAB обычно вычисляет выражения слева направо, выражение a|b&c оценивается как a|(b&c) . Рекомендуется использовать круглые скобки, чтобы явно указать предполагаемый приоритет операторов, содержащих комбинации и и | .

    Эти логические операторы имеют эквиваленты функций М-файла, как показано.

    Логическая операция
    Эквивалентная функция
    А и Б
    и(А,В)
    А | Б
    или (А, В)

    не(А)

    Примеры

    Этот пример показывает логическое ИЛИ элементов в векторе u с соответствующими элементами в векторе v :

    см. Также

    Все , любой , Найти , логика , XOR , TRUE , FALSE

    Логические операторы, короткое замыкание: && , ||

    Реляционные операторы: < , <= , > , >= , == , ~=


       Операции сравнения < > <= >= == ~=   Логические операторы, короткое замыкание && ||

    Оператор MATLAB — Javatpoint

    Оператор — это символ, который указывает компилятору выполнять различные числовые или логические операции.MATLAB предназначен для работы в основном с целыми матрицами и массивами. Поэтому функции в MATLAB работают как со скалярными, так и с нескалярными данными.

    MATLAB имеет несколько типов операторов, символов и специальных символов для работы с переменными, функциями и арифметическими операциями.

    Арифметические операторы MATLAB

    Арифметические операторы помогают выполнять простые арифметические операции, такие как сложение, вычитание, умножение, деление и возведение в степень.

    Символ Роль Соответствующая функция
    + Дополнение плюс
    + Унарный плюс плюс
    - Вычитание минус
    - Унарный минус уминус
    .* Поэлементное умножение раза
    * Умножение матриц м раз
    ./ Поэлементное правое деление рразделить
    .\ Поэлементное левое деление lразделить
    / Матрица правое деление мрдивид
    \ Матрица левого деления млразделить
    . Мощность матрицы мощность
    . Транспонировать транспонировать
    Комплексно-сопряженное транспонирование cтранспонировать

    Арифметические операторы и массивы

    За исключением некоторых матричных операторов, арифметические операторы MATLAB работают с соответствующими функциями массивов одинаковой размерности. Для векторов и прямоугольных массивов оба операнда должны быть одинакового размера, если только один из них не является скаляром.Если один операнд является скаляром, а другой нет, MATLAB применяет скаляр к каждому элементу другого операнда, это свойство называется скалярным расширением.

    В этом примере используется скалярное расширение для вычисления произведения скалярного операнда и матрицы.

    А = магия (3) А = 8 1 6 3 5 7 4 9 2 3 * А ответ= 24 3 18 9 15 21 12 27 6

    Реляционные операторы MATLAB

    Реляционные операторы выполняют операции сравнения значений.

    Символ Роль Соответствующая функция
    == Равно экв.
    ~= Не равно ne
    > Больше гт
    >= Больше или равно гэ
    Меньше
    Меньше или равно ле

    Реляционные операторы и массивы

    Реляционные операторы MATLAB сравнивают соответствующие компоненты массивов одинаковой размерности.Реляционные операторы всегда работают поэлементно. В этом примере результирующая матрица присутствует, где элемент A равен соответствующей части B.

    А = [2 7 6; 9 0 5; 3 0,5 6]; В = [8 7 0; 3 2 5; 4 -1 7]; А == Б ответ = 0 1 0 0 0 1 0 0 0

    Для векторов и прямоугольных массивов оба операнда должны иметь одинаковый размер, если только один из них не является скаляром. В этом случае, когда один операнд является скаляром, а другой — нет, MATLAB проверяет скаляр относительно каждого элемента другого операнда.Места, где конкретное отношение истинно, получают логическую 1. Места, где отношение ложно, получают логический 0.

    Логические операторы MATLAB

    Логические операторы выполняют логические операции и выводят результат в логическом состоянии true или false с использованием чисел 1 и 0 соответственно.

    MATLAB предлагает три типа логических операторов и функций:

    • Поэлементно: Работает с соответствующими элементами логических массивов.
    • Побитовый: Работает с соответствующими битами целочисленных значений или массивов.
    • Короткое замыкание: Работает со скалярными логическими выражениями.

    Значения, возвращаемые логическими операторами и функциями MATLAB, за исключением побитовых функций, имеют логический тип и подходят для использования с логическим индексированием.

    Элементарные операторы и функции

    Следующие логические операторы и функции выполняют поэлементные логические операции над своими входными данными для создания выходного массива одинакового размера. Примеры показаны в следующей таблице с использованием векторных входных данных A и B, где

    А = [0 1 1 0 1];
    Б = [1 1 0 0 1];

    Символ Роль Описание Пример
    и Логическое И Возвращает 1 для каждого истинного (ненулевого) положения элемента в обоих массивах и 0 для всех остальных элементов. А и В = 01001
    | Логическое ИЛИ Возвращает 1 для каждого положения элемента, которое является истинным (ненулевым) либо в одном, либо в другом, либо в обоих массивах, и 0 для всех остальных элементов. А | Б = 11101
    ~ Логическое НЕ Дополняет каждый элемент входного массива А. ~А = 10010
    хор Возвращает 1 для каждого положения элемента, которое является истинным (ненулевым) только в одном массиве, и 0 для всех остальных элементов. xor(A,B)=10100

    Для операторов и функций, которые принимают два операнда массива (&, | и xor), оба массива должны иметь одинаковые размеры, причем все измерения должны быть одного размера. Единственным исключением является случай, когда один операнд является скаляром, а другой — нет.

    Примечание: MATLAB преобразует любые конечные ненулевые математические значения, используемые в качестве входных данных для логических выражений, в логическую 1 или истину.

    Побитовый оператор

    Следующие функции выполняют побитовые логические операции над входными неотрицательными целыми числами.Входные данные могут быть скалярными или массивами. Если в массивах, эти операции создают выходной массив одинакового размера.

    Примеры, представленные в следующей таблице, используют скалярные входы A и B, где

    А = 28; % двоичный 11100
    B = 21; % двоичный 10101

    Функция Описание Пример
    бит и Возвращает побитовое И двух неотрицательных целых аргументов. бит и (A, B) = 20
    (двоичный 10100)
    битор Возвращает побитовое ИЛИ двух неотрицательных целых аргументов. битор(А,В) = 29
    (двоичный 11101)
    биткмп Возвращает побитовое дополнение в виде n-битного числа, где n — второй входной аргумент для bitcmp. биткмп(А,5) = 3
    (двоичный 00011)
    битксор Возвращает побитовое исключающее ИЛИ двух неотрицательных целых аргументов. bitxor(A,B) = 9
    (двоичный 01001)

    Операторы короткого замыкания

    Следующие операторы выполняют операции И и ИЛИ над логическими выражениями, включая скалярные значения.Это операторы короткого замыкания в том смысле, что они вычисляют свой второй операнд только тогда, когда первый операнд не полностью определяет вывод.

    Оператор Описание
    && Возвращает логическую 1 (истина), если оба входных значения вычисляются как истина, и логический 0 (ложь), если это не так.
    || Возвращает логическую 1 (истина), если один из входных данных или оба вычисляются как истина, и логический 0 (ложь), если это не так.

    Специальные символы MATLAB

    Специальные символы выполняют определенные задачи в зависимости от их поведения и положения, в котором они используются.

    Символ Имя символа Роль
    @ По символу
    • Функция управления построением и ссылкой
    • Вызов методов суперкласса
    . Точка или точка
    • Десятичная точка
    • Поэлементные операции
    • Доступ к полю структуры
    • Свойство объекта или спецификатор метода
    ... Точка точка точка или многоточие
    , Запятая
    : Колонка
    • Создание вектора
    • Индексация
    • Итерация цикла For
    ; Точка с запятой
    • Обозначить конец ряда
    • Подавить вывод строки кода
    ( ) Скобки
    • Приоритет оператора
    • Корпус аргумента функции
    • Индексация
    [ ] Квадратные скобки
    • Объединение массивов
    • Массивная конструкция
    • Удаление пустой матрицы и элемента массива
    • Назначение нескольких выходных аргументов
    { } Фигурные скобки
    • Назначение и содержимое массива ячеек
    % Процент
    • Комментарий
    • Спецификатор преобразования
    %{ %} Фигурная скобка процента
    ! Восклицательный знак
    ? Знак вопроса
    • Метакласс для класса MATLAB
    ' ' Одинарные кавычки
    • Конструктор массива символов
    " " Двойные кавычки
    Н/Д Пробел
    ~ Тильда
    • Логическое НЕ
    • Заполнитель аргумента
    = Знак равенства

    Специальные символы форматирования строк и символов MATLAB

    Некоторые специальные символы можно использовать только в тексте символа или строки. Эти специальные символы используются для вставки новой строки или возврата каретки, указания путей к папкам.

    Символ Имя символа Роль Пример
    /
    \
    Прямая косая черта
    Обратная косая черта
    Разделение пути к файлу или папке Windows:
    dir([matlabroot '\toolbox\matlab\elmat\scriptview1.m']) или
    dir([matlabroot '/toolbox/matlab/elmat/scriptview1.m'])
    Система UNIX/Linux: только вперед косая черта
    dir([matlabroot '/toolbox/matlab/elmat/scriptview1.м'])
    .. точка точка Родительская папка cd ..\..\example
    Поднимается на два уровня вверх и затем вниз в папку примера
    * Звездочка Подстановочный знак dir('example_*.mat')
    Находит все файлы, имена которых начинаются с example и имеют расширение .mat
    @ По символу Индикатор папки класса \@myScriptClass\получить. м
    + Плюс Индикатор каталога пакетов +mypack
    +mypack/scriptview1.m
    +mypack/@myScriptClass

    Набор инструментов для анализа магнитно-резонансной спектроскопии с открытым исходным кодом в MATLAB

    Abstract

    Магнитно-резонансная спектроскопия in vivo дает представление об обмене веществ в организме человека. Часто предлагаются новые протоколы сбора данных для улучшения качества или эффективности сбора данных.Также необходимо разработать конвейеры обработки для оптимального использования этих данных. Текущее программное обеспечение для настройки предназначено либо для общей настройки спектроскопии, либо для конкретных протоколов. Поэтому мы представляем набор инструментов Оксфордского спектроскопического анализа (OXSA) на основе MATLAB, чтобы позволить исследователям быстро разрабатывать свои собственные настраиваемые конвейеры обработки. Набор инструментов предназначен для упрощения разработки за счет: простоты установки и использования; плавный импорт стандартных данных Siemens Digital Imaging and Communications in Medicine (DICOM); возможность визуализации данных спектроскопии; предлагая надежную процедуру примерки; гибкое указание предварительных знаний при примерке; и возможность пакетной обработки спектров. В этой статье показано, как выполняется каждый из этих критериев, и приведены технические сведения о реализации в MATLAB. Код можно бесплатно загрузить с https://github.com/oxsatoolbox/oxsa.

    Образец цитирования: Purvis LAB, Clarke WT, Biasiolli L, Valkovič L, Robson MD, Rodgers CT (2017) OXSA: набор инструментов для анализа магнитно-резонансной спектроскопии с открытым исходным кодом в MATLAB. ПЛОС ОДИН 12(9): e0185356. https://doi.org/10.1371/журнал.pone.0185356

    Редактор: Андреа Мотта, Национальный исследовательский совет Италии, ИТАЛИЯ

    Поступила в редакцию: 17 июля 2017 г.; Принято: 11 сентября 2017 г.; Опубликовано: 22 сентября 2017 г.

    Авторское право: © 2017 Purvis et al. Это статья с открытым доступом, распространяемая в соответствии с условиями лицензии Creative Commons Attribution License, которая разрешает неограниченное использование, распространение и воспроизведение на любом носителе при условии указания автора и источника.

    Доступность данных: Все соответствующие данные находятся в документе и в файлах вспомогательной информации или доступны для загрузки с https://github.com/oxsatoolbox/oxsa.

    Финансирование: Финансируется стипендией сэра Генри Дейла от Wellcome Trust и Королевского общества (номер гранта 098436/Z/12/Z) для CTR. LP имеет степень доктора философии Совета медицинских исследований (Великобритания). Спонсоры не участвовали в разработке исследования, сборе и анализе данных, принятии решения о публикации или подготовке рукописи.

    Конкурирующие интересы: Авторы заявили об отсутствии конкурирующих интересов.

    Введение

    Магнитно-резонансная спектроскопия (МРС) предназначена для количественного определения метаболитов для понимания биохимии организма [1]. Было предложено множество различных методов получения MRS. Некоторые из них оптимизированы для скорости [2], а другие — для лучшей локализации сигнала или отношения сигнал/шум (SNR) (например, таблица 1 в [3]). Кроме того, были разработаны методы для измерения не только концентраций метаболитов (например,г. методы переноса насыщения для измерения скоростей химического обмена [4, 5]).

    Все эти данные необходимо обрабатывать (т.е. генерировать результаты), и с этой целью было разработано множество различных программных решений для настройки, например, LCModel [6], jMRUI [7], TARQUIN [8], ProFit [9]. Однако большинство подходящих пакетов либо нацелены на то, чтобы быть универсальным решением, либо на решение одной конкретной проблемы, что обязательно ограничивает свободу исследователей, изучающих новые методы MRS. Чтобы получить наиболее надежные, точные и полезные результаты, стратегия обработки данных должна быть оптимизирована для выбранного метода сбора данных.

    Поэтому мы представляем набор инструментов OXford Spectroscopy Analysis (OXSA), чтобы упростить индивидуальную разработку полностью автоматизированных или полуавтоматических конвейеров обработки:

    1. Простота установки и использования
    2. Плавный импорт стандартных данных Siemens Digital Imaging and Communications in Medicine (DICOM), включая все заголовки измерений
    3. Возможность визуализации интересующих объемов данных спектроскопии с разрешением 1, 2 и 3D (VOI), наложенных на изображения анатомического локализатора
    4. Предлагая надежный анализ во временной области (т. е. подгонка) подпрограмма (реализация расширенного метода для точного , надежного и эффективного алгоритма спектральной подгонки (AMARES))
    5. Гибкое и динамичное определение предварительных знаний при установке
    6. Разрешение пакетной обработки спектров

    Первоначально этот инструмент был разработан в контексте наших исследований фосфора ( 31 P) MRS в сердце и печени человека с обработкой данных, полученных на МР-системах Siemens. Впоследствии он использовался для обработки спектров протонов ( 1 H ), углерода ( 13 C ) и 31 P в ряде органов.

    Установка инструмента и зависимости

    Код OXSA доступен для загрузки (https://github.com/oxsatoolbox/oxsa) по академической лицензии. Это также включает пример скомпилированного инструмента, созданного с использованием OXSA, для распространения на компьютеры без лицензии MATLAB. Пример адаптирован для анализа 31 P-MRS. Пример кода предоставляется для создания других скомпилированных версий. Код OXSA использовался для анализа данных визуализации химического сдвига (CSI) 31 P в Оксфордском университете, Эдинбургском университете, Университете Миннесоты, Обернском университете, Университете Рабуда, Университете Макмастера и Венском медицинском университете. .Конвейеры обработки на основе OXSA обычно используются для обработки данных MRS 1 H и 13 C в Оксфорде.

    Инструмент был разработан в среде MATLAB, что обеспечивает простую настройку и немедленное использование. Инструмент можно запустить сразу после загрузки кода, дальнейшая установка не требуется. Кроме того, графический пользовательский интерфейс (GUI) и инструменты отладки позволяют легко разрабатывать новые алгоритмы и конвейеры обработки, а также комбинировать их с уже существующими внутренними инструментами обработки.Код работает в Windows, Linux и Mac OS и был протестирован для MATLAB R2014a–R2017a.

    Java-инструментарий dcm4che с открытым исходным кодом используется для загрузки файлов DICOM [10]. Рабочая версия этого инструментария включена в код OXSA, поэтому дальнейшая загрузка не требуется. Единственными дополнительными требованиями являются наборы инструментов MATLAB Optimization и Image Processing. Symbolic Math Toolbox также требуется, если AMARES.estimateDerivedParamAndCRB используется для новой функциональной формы, но сгенерированный m-код для аналитического якобиана сохраняется для всех будущих вызовов.Файлы MEX не требуются.

    О запросах на исправление ошибок для кода OXSA можно сообщать с помощью структуры проблем GutHub, которую можно найти по адресу https://github.com/OXSAtoolbox/OXSA/issues.

    Импорт данных

    Классы, используемые для загрузки данных DICOM, приведены в таблице 1. Класс dicomTree проверяет наличие файлов DICOM или DICOMDIR в выбранной папке или вложенных папках на локальных или сетевых дисках и сортирует их во вложенную структуру. Затем он сохраняет кеш в файле .mat во временном каталоге локальной системы, чтобы обеспечить очень быстрое сканирование папок на наличие новых файлов в последующих случаях.Класс dicomTree имеет вспомогательные методы, которые используются для поиска в дереве целевых данных DICOM. В качестве альтернативы предоставляется интерактивный селектор GUI DICOM (см. рис. 1). После обнаружения эти данные могут быть загружены в MATLAB с использованием класса Spectro.dicom или подклассов Spectro.Spec и Spectro.dicomImage, которые специализированы для данных спектроскопии и визуализации соответственно. Эти классы вызывают функцию SiemensCsaParse для анализа заголовков Siemens DICOM, включая частные заголовки Common Syngo Architecture (CSA), и организации данных в структуру MATLAB.

    Рис. 1. Графический интерфейс загрузки OXSA Siemens DICOM.

    Объект Spectro.FileOpenGui, показывающий Spectro.dicomUiTree (слева) вместе с предварительным просмотром изображения DICOM (справа). Контрастность можно отрегулировать в правом верхнем углу, а отдельные пиксели можно просмотреть с помощью курсора данных.

    https://doi.org/10.1371/journal.pone.0185356.g001

    Визуализация данных спектроскопии

    Данные спектроскопии можно визуализировать с помощью графического пользовательского интерфейса Spectro.PlotCsi (см. рис. 2).Графический интерфейс работает с 1, 2 и 3D CSI, а также с одновоксельными или нелокализованными данными. Отдельные подграфики по умолчанию показывают стопки изображений, которые были в средстве просмотра, когда были получены спектры. Накладывается красная сетка, показывающая расположение вокселя или вокселей, полученных с помощью последовательности, а выбранный воксель выделяется красным. Также могут отображаться полосы насыщенности, выделенные желтым цветом. Перпендикулярные стопки изображений показаны синим и зеленым цветом, а текущие изображения выделены. Контрастность каждого из изображений можно регулировать, а новый набор изображений локализатора можно загружать в интерактивном режиме.Имеются кнопки для вызова реального и мнимого спектров и затухания свободной индукции (FID) из выбранного воксела, для включения и выключения интерполяции CSI и для вызова алгоритма подбора. Инструмент с графическим интерфейсом в настоящее время предполагает реконструированную декартову компоновку вокселей в реальном пространстве.

    Рис. 2. Инструмент визуализации спектроскопии.

    Красными линиями отмечен номинальный размер вокселя. Выбранный воксель выделяется красным цветом. Полосы насыщенности выделены желтым цветом. Ползунки справа можно использовать для выбора среза или вокселя CSI.Кнопки можно использовать для запуска различных функций, например. подогнать или проверить данные из одного воксела.

    https://doi.org/10.1371/journal.pone.0185356.g002

    Алгоритм подбора

    Простейший метод количественного анализа включает интегрирование площадей пиков в спектре частотной области. Однако лежащие в основе широкие резонансы, перекрывающиеся пики и пики с низким отношением сигнал/шум, а также ошибка оператора могут привести к смещенным или неточным результатам [11]. Алгоритм подбора, который мы использовали, основан на усовершенствованном методе для точного , надежного и эффективного спектрального подбора (AMARES), который является популярным алгоритмом подбора во временной области, который включает в себя гибкие предварительные знания для повышения точности и прецизионности подбора. спектры магнитного резонанса in vivo [12].AMARES использовался для подгонки данных MRS по фосфору ( 31 P) [13], протону ( 1 H) [14] и углероду ( 13 C) [15].

    Алгоритм AMARES подгоняет данные линейным методом наименьших квадратов к следующей модельной функции [12]: (1) Где от n = 0 до N-1, N — количество измеренных точек, y n — сумма экспоненциально затухающих синусоид, i = √-1, a k — амплитуда, φ k — фаза , d k — коэффициент демпфирования, а f k — частота синусоиды k th .K – общее количество синусоид, в том числе по одной на каждую компоненту мультиплетных пиков. t n = nΔt + t 0 с интервалом дискретизации Δt и t 0 время до первой точки данных. e n — сложный белый гауссовский шум. Знак вставки у указывает на то, что эта величина представляет функцию модели, а не фактические измерения. g k обозначает, является ли форма линии для каждого пика гауссовой (g k = 1) или лоренцевской (g k = 0).

    Переменными функции модели являются химический сдвиг, ширина линии, амплитуда (т.е. площадь) и фаза для каждого пика. Они ограничены предварительными знаниями, включающими начальные значения, верхние и нижние границы и внутренние отношения между пиками. Например, при широкополосном возбуждении и после коррекции фазы 1-го порядка для компенсации мертвого времени приемника все спектральные пики часто имеют одинаковую фазу. Мультиплетные пики являются еще одним примером внутренней взаимосвязи, поскольку они имеют фиксированную разницу в химическом сдвиге на основе литературных J-связей и фиксированных отношений амплитуд.

    Первым шагом процесса подбора является решение задачи наименьших квадратов для амплитуд и фаз с использованием начальных значений частот и затухания. Полученные амплитуды и фазы затем используются в качестве начальных значений для основного шага подбора. Априорные знания применяются с использованием линеаризованной матрицы ограничений. Результаты подбора даны с оценкой нижних границ Крамера-Рао (CRLB), т. е. мерой неопределенности подбора [16].

    Функции, участвующие в процессе подгонки, описаны на рис. 3, а сама подгонка выполняется алгоритмом Trust-Region-Reflective [17] из функции lsqcurvefit MATLAB.См. рис. 4 для примера вывода. Алгоритм подгонки был проверен на основе пользовательского интерфейса магнитного резонанса (jMRUI) на основе Java для реализации AMARES [18]. Подробное описание валидации приведено в Приложении S1. Сорок пять наборов кардиологических данных in vivo 31 P-MRS были сопоставлены с нашими OXSA MATLAB AMARES и jMRUI AMARES. Наборы данных были получены в соответствии со стандартной операционной процедурой, одобренной Национальными исследовательскими службами Великобритании, и в соответствии с Хельсинкской декларацией.Отличная корреляция (R > 0,99) наблюдалась между пиковыми параметрами PCr и γ-АТФ, установленными с помощью jMRUI и OXSA. PDE с низким SNR показал более низкую корреляцию, хотя всегда выше 0,7. Среднее время запуска одного вокселя из набора данных сердечной CSI in vivo составило 18,5 ± 0,3 с для jMRUI и 0,69 ± 0,1 с для OXSA.

    Рис. 4. Выходные данные amaresPlot.

    Выходной рисунок по умолчанию из amaresPlot, показывающий соответствие примера кардиологических данных 31 P. Отдельные пики усекаются в частотной области до 2.5-кратная полная ширина на половине максимума только для целей отображения, т. е. для облегчения идентификации пиков в случаях, когда один пик имеет гораздо меньшую амплитуду, чем другие.

    https://doi.org/10.1371/journal.pone.0185356.g004

    Подходящие CRLB рассчитываются с ковариацией между параметрами. Это позволяет более точно оценивать CRLB для любых комбинаций результатов подбора с помощью AMARES.estimateDerivedParamAndCRB. При первом запуске этого кода для обработки ввода используется Symbolic Toolbox.Например, «(PCR_am / PCR_sat) / ((ATP_GAMMA1_am + ATP_GAMMA2_am) /ATP_GAMMA_sat)» обрабатывается для получения соотношения PCr/γ-ATP с поправкой на насыщение. Созданные сгенерированные функции m-кода MATLAB затем сохраняются в кэш-файле . mat. Каждый последующий вызов AMARES.estimateDerivedParamAndCRB использует этот кэш для идентификации функции, соответствующей данной строке, и, следовательно, Symbolic Toolbox больше не требуется (за исключением первого запуска с новым набором априорных знаний, например, после того, как был получен новый метаболит). добавлен).Это позволяет значительно увеличить скорость обработки и позволяет использовать компилятор MATLAB для развертывания инструментов обработки в виде исполняемого файла .EXE для использования на компьютерах без MATLAB. Пример вызова этой функции приведен в строке 73 файла examples/example_fitSimSpec.

    Включение дополнительных предварительных знаний

    Каждый файл основных предварительных знаний, например AMARES.priorKnowledge.PK_7T_Cardiac дает верхнюю и нижнюю границы для каждого параметра подбора, начальные значения и взаимосвязь между каждым пиком.В начальных предварительных знаниях возможные отношения пиков включают в себя наличие мультиплетного расщепления и отношения амплитуд, группировку ширины линий или амплитуд, а также смещения фазы и химического сдвига. В AMARES.priorKnowledge.PK_7T_Cardiac_t2 включен дополнительный параметр («base_linewidth»), который дает информацию об относительной ширине линий между пиками. Затем эта предварительная информация обрабатывается с помощью AMARES.createModelConstraints (см. рис. 3) для предоставления дескрипторов функций, относящихся к каждому параметру.В этом случае функция, необходимая для включения дополнительного ограничения ширины линии, просто добавляет параметр base_linewidth к параметру ширины линии, используемому для подгонки.

    Пример пакетной обработки данных

    Поскольку все функции загрузки и подгонки можно вызывать в MATLAB без использования графического интерфейса пользователя, для пакетной обработки данных достаточно написать короткий скрипт для повторения имен файлов, серий или вокселей по желанию. Пример этого включен в пакет—examples/example_loadCsiData_batchProcessVoxels.В этом скрипте загружается набор данных фантома CSI, подгоняется каждый воксель и строится карта амплитуд. Для пакетной обработки требуется одна дополнительная строка кода по сравнению с подгонкой одного вокселя.

    Пример полного конвейера обработки

    Наша группа использовала этот набор инструментов для создания нескольких полных конвейеров обработки. Например, были созданы пайплайны для корректировки подогнанных пиков на частичное насыщение, загрязнение кровью и расчета отношения пиков [19, 20]; для расчета карт B 1 + методом Блоха-Зигерта [21]; автоматически выполнять проверку качества вокселей CSI до и после подгонки [22]; и рассчитать скорость обмена креатинкиназы в сердце [23].

    Обсуждение

    Мы представляем интуитивно понятный, простой в использовании инструмент обработки MRS с открытым исходным кодом: OXSA. Он обладает всеми функциями, необходимыми для обработки данных спектроскопии Siemens DICOM. Он гибкий и может применяться к новым протоколам сбора данных. Кроме того, его можно скомпилировать для нетехнических пользователей, не имеющих доступа к MATLAB.

    Инструмент прост в установке и использовании. Пользователь должен иметь только MATLAB, наборы инструментов для обработки изображений и оптимизации, после чего код можно будет запустить немедленно.Мы выбрали реализацию MATLAB из-за широкой доступности MATLAB в академических центрах.

    В настоящее время инструмент полностью интегрирован только для данных Siemens DICOM. Однако были разработаны сценарии MATLAB с открытым исходным кодом для работы с данными от других крупных поставщиков MR, например. Филипс, GE. Наш гибкий код позволяет легко интегрировать эти скрипты. Точно так же алгоритмы автономной реконструкции могут быть написаны в MATLAB и интегрированы в набор инструментов OXSA. Это позволяет упростить разработку новых стратегий сбора данных в k-пространстве для CSI, поскольку реконструкция может быть протестирована в MATLAB, прежде чем она будет добавлена ​​к реконструкции онлайн-сканера.

    В настоящее время наш набор инструментов позволяет визуализировать одномерный спектр, локализованный в одно-, двух- или трехмерном пространстве. Если бы спектры были получены с дополнительным спектральным или временным измерением, в набор инструментов можно было бы добавить различные методы визуализации.

    В этой реализации использовался алгоритм подбора на основе AMARES. Результаты проверки показали, что это хорошо коррелирует с реализацией AMARES в jMRUI с сокращением времени настройки на 96,3%.Это связано с многопоточным ускорением критически важных нелинейных шагов подгонки методом наименьших квадратов в MATLAB.

    Как и для всех алгоритмов подбора, более сложный спектр подобрать сложнее. В то время как такие методы, как LCModel, используют базисные наборы метаболитов для упрощения этой проблемы [6], пакет OXSA, как и алгоритм AMARES, на котором он основан, полагается на увеличение объема предварительных знаний для достижения хорошего соответствия. В случаях, когда имеется много перекрывающихся пиков и сложная базовая линия, т.е.g., короткие спектры МРТ головного мозга TE, предварительные знания могут потребовать много времени для правильной настройки. Однако, как только это будет достигнуто, даже очень сложные спектры могут быть правильно подобраны [14].

    Алгоритм подбора может быть адаптирован, например. путем изменения формы линии или области подгонки. Это позволит подгонке оптимально соответствовать параметрам сбора данных. Включение дополнительных предварительных знаний было продемонстрировано с относительным ограничением ширины строки. Расширяя это, можно было бы ограничить ширину линий или химический сдвиг для нескольких наборов данных.Это было бы полезно в спектроскопии с дополнительными измерениями, такими как исследования стресс-реакции или насыщения-восстановления. Также можно было бы сгладить изменение ширины линии в соседних вокселах, исходя из предположения о пространственно гладкой неоднородности B 0 [24].

    Пакетная обработка — важный шаг на пути к полностью автоматизированному и независимому от оператора конвейеру обработки. Пример, включенный в пакет, examples/example_loadCsiData_batchProcessVoxels, обрабатывает несколько вокселей из одного набора данных CSI, но с минимальными дополнениями этот код может быть расширен для обработки нескольких серий в рамках сканирования или нескольких разных предметов.

    Клиническая MRS в настоящее время ограничена сложностью обработки и, следовательно, требованием для опытных пользователей. Полностью автоматизированные, независимые от оператора конвейеры обработки, которые вычисляют обработанные результаты за один шаг из необработанных данных, упрощают обработку MRS и сводят к минимуму вероятность ошибки пользователя. Этот набор инструментов упростит для исследователей создание собственных персонализированных конвейеров обработки.

    Заключение

    Мы разработали простой в использовании набор инструментов для визуализации и обработки данных спектроскопии Siemens в MATLAB.Набор инструментов позволяет выполнять пакетную обработку спектров отдельных вокселей, а также наборов данных 1D, 2D и 3D CSI. Он имеет встроенный конвейер фитингов, который может включать в себя дополнительные предварительные знания. Этот инструментарий предоставит исследователям больше свободы для быстрой разработки индивидуальных конвейеров настройки и обработки, наиболее подходящих для их протоколов сбора данных.

    Благодарности

    Финансируется стипендией сэра Генри Дейла от Wellcome Trust и Королевского общества (номер гранта 098436/Z/12/Z).LP имеет степень доктора философии Совета медицинских исследований (Великобритания).

    Каталожные номера

    1. 1. Де Грааф Р.А. (2007) ЯМР-спектроскопия in vivo: принципы и методы. Чичестер: Джон Вили и сыновья.
    2. 2. Valkovic L, Chmelik M, Meyerspeer M, Gagoski B, Rodgers CT, et al. (2016) Динамический P-31-MRSI с использованием спиральной спектроскопической визуализации может картировать митохондриальную емкость в мышцах голени человека во время упражнений на подошвенное сгибание при 7 Т ЯМР в Biomedicine 29: 1825–1834.пмид:27862510
    3. 3. Чмелик М., Поважан М., Кршак М., Грубер С., Ткачов М. и др. (2014) Магнитно-резонансная спектроскопия 31P in vivo печени человека при 7 Тл: первый опыт. ЯМР в биомедицине 27: 478–485. пмид:24615903
    4. 4. Шар М. , Эль-Шаркави АММ, Вайс Р.Г., Боттомли П.А. (2010) Тройное время повторения переноса насыщения (TRiST) Спектроскопия P-31 для измерения кинетики реакции креатинкиназы человека. Magn Reson Med 63: 1493–1501. пмид:20512852
    5. 5.Валкович Л., Богнер В., Гайдошик М., Поважан М., Кукурова И.Ю. и соавт. (2014) Одномерная спектроскопия in vivo с выбранным изображением локализовала перенос насыщения фосфором при 7T. Магнитный резонанс в медицине 72: 1509–1515. пмид:24470429
    6. 6. Provencher SW (2001) Автоматический количественный анализ локализованных спектров H-1 in vivo с помощью LCModel. ЯМР в биомедицине 14: 260–264. пмид:11410943
    7. 7. Стефан Д., Ди Чезаре Ф., Андрасеску А., Попа Э., Лазариев А. и др.(2009)Количественная оценка сигналов магнитно-резонансной спектроскопии: пакет программного обеспечения jMRUI. Измерительная наука и технологии 20: 104035.
    8. 8. Уилсон М., Рейнольдс Г., Кауппинен Р.А., Арванитис Т.Н., Пит А.С. (2011) Ограниченный подход наименьших квадратов к автоматизированному количественному анализу данных магнитно-резонансной спектроскопии H-1 in vivo. Магнитный резонанс в медицине 65: 1–12. пмид:20878762
    9. 9. Шульте Р.Ф., Босигер П. (2006) ProFit: двумерная предварительная подгонка спектров с J-разрешением.ЯМР в биомедицине 19: 255–263. пмид:16541464
    10. 10. Zeilinger G (2006) dcm4che: Управление клиническими изображениями и объектами с открытым исходным кодом.
    11. 11. Cady EB (1991) Переоценка абсолютных концентраций фосфорилированных метаболитов в коре головного мозга новорожденного человека, полученная путем подгонки кривых Лоренца к спектру ЯМР P-31. Журнал магнитного резонанса 91: 637–643.
    12. 12. Vanhamme L, van den Boogaart A, Van Huffel S (1997) Усовершенствованный метод точной и эффективной количественной оценки данных MRS с использованием предварительных знаний.J Magn Reson 129: 35–43. пмид:9405214
    13. 13. Роджерс С.Т., Кларк В.Т., Снайдер С., Воган Дж.Т., Нойбауэр С. и др. (2014) Магнитно-резонансная спектроскопия 31P сердца человека при 7 тесла. Магнитный резонанс в медицине 72: 304–315. пмид:24006267
    14. 14. Кановски М., Кауфманн Дж., Браун Дж., Бернардинг Дж., Темпельманн С. (2004) Количественный анализ смоделированных спектров человеческого мозга H-1 с коротким временем эха с помощью LCModel и AMARES. Магнитный резонанс в медицине 51: 904–912. пмид:15122672
    15. 15.Ланц Б., Дуарте Дж.М.Н., Кунц Н., Млынарик В., Грюттер Р. и др. (2013) Какие предварительные знания? Количественная оценка in vivo 13C MR-спектров головного мозга после инфузии 13C глюкозы с использованием AMARES. Магнитный резонанс в медицине 69: 1512–1522. пмид:22886985
    16. 16. Cavassila S, Deval S, Huegen C, van Ormondt D, Graveron-Demilly D (2001) Границы Крамера-Рао: инструмент оценки для количественного анализа. ЯМР Биомед 14: 278-283. пмид:11410946
    17. 17. Коулман Т., Ли И. (1996) Подход внутренней области доверия к нелинейной минимизации с учетом границ.СИАМ J Оптим 6: 418–445.
    18. 18. Стефан Д., Чезаре Ф.Д., Андрасеску А., Попа Э., Лазариев А. и др. (2009)Количественная оценка сигналов магнитно-резонансной спектроскопии: пакет программного обеспечения jMRUI. Измерительная наука и техника 20: 104035.
    19. 19. Stoll VM, Clarke WT, Levelt E, Liu A, Myerson SG, et al. (2016) Дилатационная кардиомиопатия: Фосфор 31 МР-спектроскопия при 7 T. Радиология 281: 409–417. пмид:27326664
    20. 20. Valkovic L, Clarke WT, Purvis LAB, Schaller B, Robson MD, et al.(2016) Адиабатическое возбуждение для МР-спектроскопии 31P в сердце человека при 7 Тл: технико-экономическое обоснование. Магнитный резонанс в медицине: н/д-н/д.
    21. 21. Clarke WT, Robson MD, Rodgers CT (2016)Bloch-Siegert B1+-картирование для сердца человека (31) P-MRS при 7 Тесла. Magn Reson Med 76: 1047–1058. пмид:26509652
    22. 22. Purvis LAB, Clarke WT, Valkovič L, Levick C, Pavlides M, et al. (2017) Содержание фосфодиэфира, измеренное в печени человека с помощью 31P MR-спектроскопии in vivo при 7 тесла.Магнитный резонанс в медицине: н/д – н/д.
    23. 23. Clarke WT, Robson MD, Neubauer S, Rodgers CT (2017)Константа скорости креатинкиназы в сердце человека, измеренная с помощью 3D-локализации при 7 тесла. Магнитный резонанс в медицине 78: 20–32. пмид:27579566
    24. 24. Poullet J-B, Sima DM, Van Huffel S (2008)Количественная оценка сигнала MRS: обзор методов во временной и частотной областях. Журнал магнитного резонанса 195: 134–144. пмид:18829355
    .

Оставить комментарий