Matlab Octave-strcat()在使用单个参数调用时不修剪尾随空格

Matlab Octave-strcat()在使用单个参数调用时不修剪尾随空格,matlab,octave,Matlab,Octave,为什么只有一个参数的strcat() 我正在尝试使用strcat()从字符数组中修剪尾随空格: s = "cheese "; s = strcat(s); 但这将返回s=“cheese”,即空格没有变化。如果我向strcat()添加第二个参数,例如s=strcat(s,“”)现在s=“cheese” 我是这样做的,而不是调用strtrim(),因为zyBooks教科书明确地希望我们用一个字符串来完成这个任务——他们的示例显示strcat()是以这种方式使用的。我忽略了什么 您的代码确实删除

为什么只有一个参数的
strcat()

我正在尝试使用strcat()从字符数组中修剪尾随空格:

s = "cheese   ";
s = strcat(s);
但这将返回
s=“cheese”
,即空格没有变化。如果我向strcat()添加第二个参数,例如
s=strcat(s,“”)
现在
s=“cheese”


我是这样做的,而不是调用strtrim(),因为zyBooks教科书明确地希望我们用一个字符串来完成这个任务——他们的示例显示strcat()是以这种方式使用的。我忽略了什么

您的代码确实删除了Matlab中的尾随空格,但没有删除倍频程中的尾随空格。这种情况有时会发生:Octave函数的工作原理或多或少类似于Matlab,但有一些不同。有时这些差异是非传统的,有时则不是

在本例中,我认为您遇到的行为是倍频程函数中的错误,因为它表示

在串接字符串之前,将消除任何字符串输入的尾随空白

当有一个字符串作为输入时,它就不这样做了。

几小时后


您可以等待包含此更改的下一版本,也可以在Octave安装中下载并替换strcat.m。

看起来这是预期的行为。我想知道为什么使用strtrim(s)
是不好的,因为它的功能就是为这个而设计的。我不知道后者是什么;他们一点也不提。对于前者,它在哪里声明保留单个单元格字符串的尾随空格?“在串接字符串之前消除任何字符串输入的尾随空白”是否暗示了这一点?
strcat
在Matlab和倍频程中的行为不同
strcat
的目的是连接(而不是修剪)。@apraetor在我上面发布的链接中说:“请注意,单元格字符串值没有空格修剪”。也许我在英语或八度音阶词汇方面有问题,但我对文档的理解如下:如果
strcat
被指定为单元格字符串作为输入,它将按照您的预期运行,但如果您指定一个单元格字符串,它将不会修剪空格。@ThomasWilmotte“cell string values”是复数形式,但我理解您的意思;这是英语模棱两可的情况之一。如果示例中包含了一个单参数的情况,它会更清楚。事实上,经过仔细检查(以及事后的清晰观察),我认为文档的作者知道它们的意思,但没有明确说明:他们写了“strcat(s1,s2,…”),其中在Matlab文档中显示为“strcat(s1,…”)。谢谢你的回答。如果你能确认
strcat('foo')
在matlab中返回
'foo'
,你应该在savannah上提交一份错误报告,请使用项目组“matlab兼容性”。感谢you@Andy是的,我可以确认(在MatlabR2015B上测试)。阿普雷托,你能把错误报告归档吗(如果你觉得合适的话)?伙计,你们动作快,我上床睡觉了,醒来发现了这一切。谢谢啊,我的第一个真正的错误!现在我真希望我没有对答案发火!(指向默认分支的链接对我不起作用)看起来gnu服务器()当前有一些问题。。。过几个小时再试一次