clear;
clc;
format short
data = load('matlab_raw.csv',',');
data = data(:,1:end-1);
I0 = min(data(:,9));
I1 = max(data(:,9));
%{
pause(1+60*rand())
c=parcluster();
t=tempname();
mkdir(t);
c.JobStorageLocation=t;
myCluster = parcluster('local');
myCluster.NumWorkers = 4;
currentfolder = pwd;
sched=findResource('scheduler','type','local');
sched.DataLocation = currentfolder;
matlabpool close force
matlabpool open 4
%}
tic
parfor x = I0:I1
s = RandStream('CombRecursive','Seed',1);
RandStream.setGlobalStream(s);
id0 = find(data(:,9)==x);
id = find(data(:,9)==x)
data2 = data(id,:);
fup12 = data2(:,1);
fid = data2(1,2);
year = data2(:,3);
a = data2(:,4);
b = data2(:,5);
c = data2(:,6);
svshare = data2(:,7);
N = data2(1,8);
fid2yr = data2(1,9);
omega1 = data2(:,end);
abc = [a b c];
%%4 different starting values
%seed = 1111;
%rng(seed);
x0a = rand(1,1);
x0b = (1 - x0a)/(N-1);
x0 = [x0a ; repmat(x0b,(N-1),1)];
x0_1_1 = [rand(1,1) ; x0];
%revenue shares
%seed = 1112;
%rng(seed);
x0_1_2 = [rand(1,1) ; svshare];
%random
%seed = 1113;
%rng(seed);
x0_1_3 = [rand(1,1) ; rand(length(svshare),1)];
%1/N
%seed = 1114;
%rng(seed);
x0_1_4 = [rand(1,1) ; ones(N,1)/N];
dataout = runrho11(x,fup12,fid,year,a,b,c,svshare,N,fid2yr,omega1,abc,x0_1_1,x0_1_2,x0_1_3,x0_1_4);
end
toc
%matlabpool close
lock = 1;
csvwrite('lock.out',lock);
exit
如何看懂这段matlab代码
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-19 04:06关注获得7.50元问题酬金 ChatGPT尝试为您解答,仅供参考
这段 matlab 代码的目的是对一个 csv 文件中的数据进行处理,然后将处理的结果写入另一个文件。- 首先,它使用 load 函数读取 csv 文件中的数据并存储在变量 data 中。然后,它通过使用 data(:,1:end-1) 来删除最后一列的数据。
- 然后,它使用 min 和 max 函数找到第九列中的最小值和最大值,并将其分别存储在 I0 和 I1 中。
- 然后,它使用 parfor 循环来遍历 I0 到 I1 的范围。对于每个循环迭代,它使用 find 函数找到第九列中值等于当前循环变量的行的索引,并将这些索引存储在变量 id 中。它还将这些行的数据存储在变量 data2 中。
- 然后,它使用解构赋值的方式将 data2 中的每一列分别存储在多个变量中。例如,fup12 变量存储着 data2 的第一列,fid 变量存储着 data2 的第二列,以此类推。
- 接下来,它使用四组不同的随机数字种子生成四组不同的起始值,并分别将它们存储在变量 x0_1_1、x0_1_2、x0_1_3 和 x0_1_4 中。
- 在调用 runrho11 函数之后,该函数将使用传递给它的参数(包括前面提到的 fup12、fid、year、a、b、c、svshare、N、fid2yr、omega1 和 abc 变量)对数据进行处理。
- 最后,该函数将返回处理的结果,并将其存储在变量 dataout 中。
在循环结束后,它使用 toc 函数来计算运行的时间。然后,它将变量 lock 赋值为 1,并使用 csvwrite 函数将这个值写入文件中。最后,它使用 exit 命令退出 matlab。
评论 打赏 举报解决 4无用