我正在编写我的第一个Matlab脚本,尝试使用dir()时出现错误。这是脚本:
strLocation = "C:\Users\myname\Documents\MATLAB";
listing = dir(strLocation)
错误是:
Error using dir Function is not defined for 'string' inputs.
我在做什么错了?
答案 0 :(得分:8)
首先应注意,在Matlab中, char
向量和 string
是different things。 string
数据类型是最近引入的(我认为是在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)