Matlab, передаваемый в одинарных кавычках - PullRequest
1 голос
/ 03 апреля 2012

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

read -a array <<< "$1"
for i in ${array[@]}
do
    echo $i
done

В Matlab GUI я хочу проверить эту функцию следующим образом:

>> string = '1 2 3 4 5'
>> unix(['script.sh ' string]) 

и это дает

1

ans =

 0

но он не распечатывает весь массив! В баш, если я сделаю ...

script.sh '1 2 3 4 5'

Я получаю

1
2
3
4
5

Моя теория состоит в том, что matlab принимает числа, а скрипт bash просто читает первый аргумент '1' в массив и печатает его. Так что, если бы я мог как-то передать строку, заключенную в одинарные кавычки, она должна работать.

1 Ответ

2 голосов
/ 03 апреля 2012

Проблема в том, что команда Matlab unix() возвращает только переменную состояния по умолчанию.Вы должны сказать ему, чтобы он также возвращал стандартный вывод, который упоминается в документации Matlab для этой функции .Значение 0, которое вы видите, является переменной состояния, а 0 означает «успех».

То, что вы хотите сделать, это:

 [status, result] = unix(['script.sh ' string]);
 disp(result);

Кроме того, здесьявляется ссылкой , которая помогает объяснить форматирование строки в Matlab и включает в себя пример добавления одиночной кавычки в строку.Это достигается повторением символа одинарной кавычки дважды подряд внутри строки.Итак, '' '' дает ', потому что внутри двух внешних одинарных кавычек я поместил две последовательные одинарные кавычки.Это отличается от использования двойной кавычки на клавиатуре, которая производит двойные кавычки.Таким образом, вы можете написать строку массива как:

>> string = '''1 2 3 4 5'''
string = '1 2 3 4 5'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...