Matlab for循环中的动态输出参数
我对Matlab相当陌生,我创建这个脚本是为了帮助我从excel文件中收集4个数字。到目前为止,这一个有效:Matlab for循环中的动态输出参数,matlab,Matlab,我对Matlab相当陌生,我创建这个脚本是为了帮助我从excel文件中收集4个数字。到目前为止,这一个有效: clear all cd('F:/Wortpaare Analyse/Excel') VPNumber = input('Which Participant Number?', 's'); filename = (['PAL_',VPNumber,'_Gain_Loss.xlsx']); sheet = 1; x1Range = 'N324'; GainBlock1 = xlsrea
clear all
cd('F:/Wortpaare Analyse/Excel')
VPNumber = input('Which Participant Number?', 's');
filename = (['PAL_',VPNumber,'_Gain_Loss.xlsx']);
sheet = 1;
x1Range = 'N324';
GainBlock1 = xlsread(filename,sheet,x1Range);
x1Range = 'O324';
LossBlock1 = xlsread(filename,sheet,x1Range);
x1Range = 'AD324';
GainBlock2 = xlsread(filename,sheet,x1Range);
x1Range = 'AE324';
LossBlock2 = xlsread(filename,sheet,x1Range);
AnalyseProband = [GainBlock1, LossBlock1, GainBlock2, GainBlock2]
现在,我想制作一个脚本,用于分析前20个excel文件,并尝试以下操作:
clear all
cd('F:/Wortpaare Analyse/Excel')
for VPNumber = 1:20 %for the 20 files
a = (['PAL_%d_Gain_Loss.xlsx']);
filename = sprintf(a, VPNumber) % specifies the name of the file
sheet = 1;
x1Range = 'N324';
(['GainBlock1_',VPNummer]) = xlsread(filename,sheet,x1Range);
....
end
问题似乎是我只能有一个输出参数。我想更改每个循环中的输出参数,这样它就不会在每个循环中覆盖“GainBlock1”
最后,我希望有以下变量:
GainBlock1_1(用于第一张excel表格)
GainBlock1_2(用于第二张excel表格)
...
GainBlock1_20(用于第20张excel表格)
有没有聪明的办法?我能够相当轻松地编写第一个脚本,但无法在第二个脚本中取得任何重大进展。非常感谢您的帮助
最好的,
Luca这可以通过将数据存储在数组或单元格中来实现。我相信一个数组就足以满足您的需要。我在下面包含了一个重新组织的代码示例,将其分解为多个函数,使其更易于阅读和理解 基本上,第一个函数处理循环并控制数据在数组中的位置,第二个函数是原始脚本,它接受VPNumber作为输入 这将返回一个20x4数组,其中第一个索引控制从中提取数据的工作表,第二个索引控制它是否为
[GainBlock1,LossBlock1,GainBlock2,LossBlock2]
。i、 e.-第5页的增益块1将是分析探针(5,1)
,第11页的损耗块2将是分析探针(11,4)
这可以通过将数据存储在数组或单元格中来实现。我相信一个数组就足以满足您的需要。我在下面包含了一个重新组织的代码示例,将其分解为多个函数,使其更易于阅读和理解 基本上,第一个函数处理循环并控制数据在数组中的位置,第二个函数是原始脚本,它接受VPNumber作为输入 这将返回一个20x4数组,其中第一个索引控制从中提取数据的工作表,第二个索引控制它是否为
[GainBlock1,LossBlock1,GainBlock2,LossBlock2]
。i、 e.-第5页的增益块1将是分析探针(5,1)
,第11页的损耗块2将是分析探针(11,4)
如果使用数组
GainBlock
并将每张图纸设置为数组的索引,会怎么样?如果使用数组GainBlock
并将每张图纸设置为数组的索引,会怎么样?
function AnalyseProband = getAllProbands()
currentDir = pwd;
returnToOriginalDir = onCleanup(@()cd(currentDir));
cd('F:/Wortpaare Analyse/Excel')
numProbands = 20;
AnalyseProband = zeros(numProbands,4);
for n = 1:numProbands
AnalyseProband(n,:) = getBlockInfoFromXLS(n);
end
end
function AnalyseProband = getBlockInfoFromXLS(VPNumber)
a = 'PAL_%d_Gain_Loss.xlsx';
filename = sprintf(a, VPNumber); % specifies the name of the file
sheet = 1;
x1Range = 'N324';
GainBlock1 = xlsread(filename,sheet,x1Range);
x1Range = 'O324';
LossBlock1 = xlsread(filename,sheet,x1Range);
x1Range = 'AD324';
GainBlock2 = xlsread(filename,sheet,x1Range);
x1Range = 'AE324';
LossBlock2 = xlsread(filename,sheet,x1Range);
AnalyseProband = [GainBlock1, LossBlock1, GainBlock2, LossBlock2];
end