我不僅嘗試回圈遍歷不同的 excel 表(~125),還嘗試回圈遍歷不同的 excel 檔案(~12)。我設法為作業表撰寫了代碼,但現在我正在努力如何將其擴展到不同的 excel 檔案。excel 檔案都具有相同的結構和作業表的數量/名稱。誰能幫我?非常感謝提前!!
foldername = 'Raw_data';
cd(foldername);
fnames = dir('*raw.xlsx');
%% extraction of sheet name
[~, sheet_name] = xlsfinfo('Test_raw.xlsx');
%% additional array for merging later
cali=[1; 2; 5; 10; 20; 50; 100; 200; 500; 1000];
%for i=1:length(fnames) %I guess ?
for k=1:numel(sheet_name) %operation for all sheets
%extract data of one excel file, but different sheets
[~,~,raw{k}]=xlsread('Test_raw.xlsx',sheet_name{k},'A5:A14');
x=vertcat(raw{:});
end
B = reshape(x,10,k);
numind = cellfun(@isnumeric, B); %identifies numeric values
B(~numind) = {NaN} %NOT num. values to NaN
b =cell2mat(B);
final_data = [cali b];
%end
uj5u.com熱心網友回復:
你想遍歷所有的 excel 檔案。您已經收集了fnames. 您基本上確實設定了 for 回圈,唯一缺少的是替換'Test_raw.xlsx'為.xlsreadfnames(i).name
for i=1:length(fnames) %I guess ?
for k=1:numel(sheet_name) %operation for all sheets
%extract data of one excel file, but different sheets
[~,~,raw{k}]=xlsread('Test_raw.xlsx',sheet_name{k},'A5:A14');
x=vertcat(raw{:});
end
end
請注意,您必須調整您的 final_data 變數。對于其中所有檔案的所有資料,您可以將此變數用作包含每個檔案元素的單元格陣列。在進入回圈之前分配這個陣列是個好習慣
final_data = cell(length(fnames),1);
%% here go the loops
clear B
B = reshape(x,10,k);
numind = cellfun(@isnumeric, B); %identifies numeric values
B(~numind) = {NaN} %NOT num. values to NaN
b =cell2mat(B);
final_data{i} = [cali b];
B,numind并且b將是每個回圈都被覆寫的臨時作業變數。因此,在下次使用之前清除它們可能是一種很好的做法。
在回圈之后,您可以訪問您的資料,例如final_data{5}訪問第五個檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/468592.html
下一篇:SAS來自單變數的新變數陣列
