Ошибка использования dir Функция не определена для «строковых» входов - PullRequest
0 голосов
/ 16 декабря 2018

Я пишу свой первый скрипт Matlab и получаю сообщение об ошибке, пытаясь использовать dir ().Это скрипт:

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

Ошибка:

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

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Поскольку в MATLAB R2017a двойные кавычки обозначают строки, а одинарные кавычки обозначают символьные векторы.

Для функции dir требуется вектор символов, поэтому его следует вызывать с одинарными кавычками,

strLocation = 'C:\Users\myname\Documents\MATLAB';
listing = dir(strLocation)
0 голосов
/ 16 декабря 2018

Прежде всего следует отметить, что char вектор и string * разные вещи в Matlab.Тип данных string был введен недавно (я думаю, в R2016b).Предыдущие версии не поддерживают тип string, только char векторы.

Поскольку был введен тип данных string, многие встроенные функции, которые раньше принимали char векторный ввод, теперь могут приниматьstring вход также.Но это, очевидно, постепенно включается в функции.Таким образом, даже если ваша версия Matlab поддерживает тип данных string, вы можете найти некоторые функции, которые все еще могут принимать только вектор char в качестве входных данных.Это похоже на случай dir в вашей версии.В 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...