我想知道如何在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'读入数组并打印出来。因此,如果我能以某种方式传递由单引号封装的字符串,那么它应该可以工作。
答案 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'