I am getting a 'Argument must contain a string' error.

3 ビュー (過去 30 日間)
sivalogan satchithanandamoorthy
sivalogan satchithanandamoorthy 2017 年 5 月 8 日
[fileName,filePath] = uigetfile({'*.txt'},'Pick a file','MultiSelect','on')
pathToFile = fullfile(filePath,fileName)
x= size(pathToFile,2)
store=load(pathToFile(:,1));
prompt ='Please choose the Stress column';
stress=store(:,input(prompt));
prompt ='Please choose the strain column';
strain=store(:,input(prompt));
  4 件のコメント
Adam
Adam 2017 年 5 月 8 日
Where does 'str' come from?
sivalogan satchithanandamoorthy
sivalogan satchithanandamoorthy 2017 年 5 月 8 日
I want user to open multiple file. 'str' is basically a folder for one of the file.

サインインしてコメントする。

採用された回答

Walter Roberson
Walter Roberson 2017 年 5 月 8 日
store = load(pathToFile{1});
You have multiselect on and you are selecting multiple files, so pathToFile could be a cell array of strings. pathToFile(:,1) would then be a cell array of strings. When you use multiselect, you get a row vector cell array, so pathToFile(:,1) would be a 1 x 1 cell array of strings. You cannot load() using a cell array of strings: you have to load() a character vector such as pathToFile{1}
Caution: when multiselect is on, but the user only selects a single file, the first output is a char vector; if the user selects multiple files then the first output is a cell array of strings. You should not assume that the user definitely selected multiple files, so you should protect against the possibility:
[fileName,filePath] = uigetfile({'*.txt'},'Pick a file','MultiSelect','on');
if isnumeric(fileName); disp('Cancelled!'); return; end
fileName = cellstr(fileName); %converts possible single string to cell array, leaves existing cell arrays the way they are.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLow-Level File I/O についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by