使用目录时出错,未为“字符串”输入定义功能

时间:2018-12-16 20:17:54

标签: string matlab

我正在编写我的第一个Matlab脚本,尝试使用dir()时出现错误。这是脚本:

strLocation = "C:\Users\myname\Documents\MATLAB";
listing = dir(strLocation)

错误是:

Error using dir
Function is not defined for 'string' inputs.

我在做什么错了?

2 个答案:

答案 0 :(得分:8)

首先应注意,在Matlab中, char向量 string different thingsstring数据类型是最近引入的(我认为是在R2016b中)。以前的版本不支持string类型,仅支持char向量。

自从引入string数据类型以来,许多用于接受char向量输入的内置函数现在也可以接受string输入。但是,显然,这已被逐步整合到功能中。因此,即使您的Matlab版本支持string数据类型,您也可能会发现某些函数仍然只能将char向量作为输入。在您的版本中,dir似乎是这种情况。根据{{​​3}},在R2018b中,dir支持两种类型的输入。

因此,您需要将dir的输入定义为char向量。为此,请使用'代替"

strLocation = 'C:\Users\myname\Documents\MATLAB';
listing = dir(strLocation)

或者,如果您必须具有字符串,则在将其传递给char之前将其转换为dir向量:

strLocation = "C:\Users\myname\Documents\MATLAB";
listing = dir(char(strLocation))

答案 1 :(得分:2)

从MATLAB R2017a开始,双引号表示字符串,单引号表示字符向量。

dir函数需要一个char向量,因此您应该使用单引号将其调用,

strLocation = 'C:\Users\myname\Documents\MATLAB';
listing = dir(strLocation)