игнорируя синтаксис возвращаемого значения? - PullRequest
4 голосов
/ 03 марта 2011

В 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, скомпилированный для окон с некоторыми пакетами Octave Forge.

Ответы [ 2 ]

5 голосов
/ 30 марта 2014

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

2 голосов
/ 03 марта 2011

Этот синтаксис был только что введен в одной из последних версий. Поэтому не стоит ожидать, что 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);

Мне нравится последнее, так как ans - это то, что matlab использует в любом случае как ведро с битами.

...