String 有人知道使用变量作为xlsread文件名输入的方法吗?
编辑:我解决了这个问题。索赔已作为单元格类列出。使用cell2mat将其转换为char,代码正常工作。谢谢大家 我将字符串变量设置为文件路径/位置。我想使用这个变量作为xlsread函数的输入,但Matlab告诉我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
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时出错
文件名必须是字符串。