String 有人知道使用变量作为xlsread文件名输入的方法吗?

String 有人知道使用变量作为xlsread文件名输入的方法吗?,string,matlab,variables,xlsread,String,Matlab,Variables,Xlsread,编辑:我解决了这个问题。索赔已作为单元格类列出。使用cell2mat将其转换为char,代码正常工作。谢谢大家 我将字符串变量设置为文件路径/位置。我想使用这个变量作为xlsread函数的输入,但Matlab告诉我xlsread不能接受变量输入。我很难确定是否有一个解决办法。有人能帮我吗 function C = claimReader() inp = csv2struct(['C:\Documents and Settings\nkulczy\My Documents\085 Starr

编辑:我解决了这个问题。索赔已作为单元格类列出。使用cell2mat将其转换为char,代码正常工作。谢谢大家

我将字符串变量设置为文件路径/位置。我想使用这个变量作为xlsread函数的输入,但Matlab告诉我xlsread不能接受变量输入。我很难确定是否有一个解决办法。有人能帮我吗

 function C = claimReader()

 inp = csv2struct(['C:\Documents and Settings\nkulczy\My Documents\085 Starry Sky\','Starry_Sky_inputs_vert.csv']);
 inputTitles = [{'Output_Dir'};{'Claimz'};{'Prodz'};{'Fault_Locations'};{'Fault_Type'};{'Primary_Failed_Part'};{'Part_Group'};{'Selected_SEAG'};{'Change_Point'};{'Date_Compile'};{'Minimum_Date'}];

 claim = inp.(cell2mat(inputTitles(2)));  %returns a file path/location string

 C = csv2struct(claim);

 end


 function Out = csv2struct(filename)

 %% read xls file with a single header row

 [~, ~, raw] = xlsread(filename);

 [~ , ~, ext] = fileparts(filename);

 if ~strcmpi(ext, '.csv') %convert non .csv files to .csv, so blanks stay blank
      filename=[pwd,'tempcsv',datestr(now,'yymmddHHMMSSFFF'),'.csv'];
      xlswrite(filename,raw);
      [~ , ~, raw] = xlsread(filename);
      delete(filename);
 end

 if size(raw,1)==11 && size(raw,2)==2 %transpose SS inputs (must      match dimensions of input matrix EXACTLY!!!)
     raw = raw';
 end

 nRow = size(raw,1);
 nCol = size(raw,2);
 header = raw(1,:);
 raw(1,:) = [];

 end

使用以下语法,应该不会有任何问题:

pathname = 'c:\...\filename.xlsx';
A = xlsread(pathname);
编辑:关于您的代码:

我看不到您在哪里定义
文件名
-您应该将
声明
(它包含所需的路径?)传递给
xlsread
-函数。
也许你会得到一个有chars的牢房。因此,您的输入需要是
claim{1}

使用以下语法,并且不会出现任何问题:

pathname = 'c:\...\filename.xlsx';
A = xlsread(pathname);
编辑:关于您的代码:

我看不到您在哪里定义
文件名
-您应该将
声明
(它包含所需的路径?)传递给
xlsread
-函数。
也许你会得到一个有chars的牢房。因此,您的输入需要是
claim{1}

检查
xlsread
的文档,第一个输出(
yourNums
)将只返回工作表中的数值
txt
将只返回文本<代码>原始数据将返回工作表中的原始数据

flNm = 'c:\myFolder\myFile.xlsx';

[yourNums, txt, rawData] = xlsread(flNm);
TS后更新:


声明是一个单元格数组。因此,您需要传递
声明{1}
,以使其成为字符串。

检查
xlsread
的文档,第一个输出(
yourNums
)将只返回工作表中的数值
txt
将只返回文本<代码>原始数据
将返回工作表中的原始数据

flNm = 'c:\myFolder\myFile.xlsx';

[yourNums, txt, rawData] = xlsread(flNm);
TS后更新:


声明是一个单元格数组。因此,您需要传递
声明{1}
,以使其成为字符串。

您做错了什么。发布您的代码。这绝对是可能的,请查看文档中的示例:。因为你很可能刚刚犯了一个小错误,我做了一些编辑,这有帮助吗?是的,我解决了问题。我无意中引用了1x1单元格,而不是其中的字符串。说到matlab,我是一个极端的业余爱好者,学习曲线相当陡峭。你做错了什么。发布您的代码。这绝对是可能的,请查看文档中的示例:。因为你很可能刚刚犯了一个小错误,我做了一些编辑,这有帮助吗?是的,我解决了问题。我无意中引用了1x1单元格,而不是其中的字符串。说到matlab,我是一个极端的业余爱好者,学习曲线相当陡峭。你正在重命名一个内置函数。你正在重命名一个内置函数。如果我手动插入文件路径和位置,[~,~,raw]可以很好地提供原始数据。我的错误是:
???使用==>xlsread at 122时出错
文件名必须是字符串。
如果我手动插入文件路径和位置,[~,~,raw]可以很好地提供原始数据。我的错误是:
???在122处使用==>xlsread时出错
文件名必须是字符串。