Matlab传入单引号

时间:2012-04-02 22:39:24

标签: arrays bash matlab

我想知道如何在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

但它没有打印出整个阵列!在bash,如果我做...

script.sh '1 2 3 4 5'

我得到了

1
2
3
4
5

我的理论是matlab正在接受数字,而bash脚本只是将第一个参数'1'读入数组并打印出来。因此,如果我能以某种方式传递由单引号封装的字符串,那么它应该可以工作。

1 个答案:

答案 0 :(得分:2)

问题是Matlab的unix()命令默认只返回状态变量。您必须告诉它返回标准输出,这在the Matlab documentation for this function中提到。您看到的0值是状态变量,而0表示&#34;成功。&#34;

您想要做的是:

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

此外,here is a link有助于解释Matlab中的字符串格式,并包含将单引号添加到字符串中的示例。这是通过在字符串内连续两次重复单引号来实现的。所以&#39;&#39;&#39;&#39;收益率',因为在两个外部单引号中,我已经放置了两个连续的单引号。这与使用键盘上的双引号键击不同,后者产生双引号。所以你可以把数组字符串写成:

>> string = '''1 2 3 4 5'''
string = '1 2 3 4 5'