игнорировать синтаксис возвращаемого значения?

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

У меня есть два вопроса:

  1. Почему Octave не поддерживает это? (т. е. ошибка, будущее усовершенствование, дизайнерское решение и т. д.)

  2. Каков альтернативный синтаксис в Octave, если он есть (без того, чтобы просто поставить «фиктивную переменную» на место, а затем очистить эту переменную)? Кроме того, совместим ли этот альтернативный синтаксис с Matlab?


% this is valid Matlab code, but will result in a syntax error in Octave
[colA, colB, ~, colC] = textread('data.txt', '%d %d %s %d', 1);

К вашему сведению, я использую Octave 3.2.4, скомпилированную для Windows с некоторыми пакетами Octave Forge.


person helloworld922    schedule 03.03.2011    source источник


Ответы (2)


Этот синтаксис был введен только в одной из последних версий. Таким образом, нет никаких ожиданий, что Octave будет соответствовать этой функции.

Ваши альтернативы - эффективно ввести фиктивные переменные в той или иной форме. Вот общие варианты, которые использовались до того, как ~ стал вариантом.

[colA, colB, colC, colC] = textread('data.txt', '%d %d %s %d', 1);
[colA, colB, ans, colC] = textread('data.txt', '%d %d %s %d', 1);

Мне нравится последнее, так как Matlab все равно использует его как битовое ведро.

person Community    schedule 03.03.2011

Эта функция была представлена ​​в Octave 3.4. Так что код должен работать с текущими сборками Octave.

person Twonky    schedule 30.03.2014