Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MATLAB中用parfor命令创建EXCEL文件进行并行处理_Excel_Matlab_Parallel Processing_Parfor - Fatal编程技术网

在MATLAB中用parfor命令创建EXCEL文件进行并行处理

在MATLAB中用parfor命令创建EXCEL文件进行并行处理,excel,matlab,parallel-processing,parfor,Excel,Matlab,Parallel Processing,Parfor,我想在代码开始时在parfor循环外创建excel文件,然后用每个循环更新excel文件,最后在循环完成后将excel文件存储到特定位置。但是我有一些错误。使用以下命令: matlabpool('open',2); pwd='C:\Users\myPC\Desktop'; fName = fullfile(pwd, 'file.xls'); %# create Excel COM Server Excel = actxserver('Excel.Applicati

我想在代码开始时在parfor循环外创建excel文件,然后用每个循环更新excel文件,最后在循环完成后将excel文件存储到特定位置。但是我有一些错误。使用以下命令:

   matlabpool('open',2);
   pwd='C:\Users\myPC\Desktop';
   fName = fullfile(pwd, 'file.xls');
   %# create Excel COM Server

   Excel = actxserver('Excel.Application');
   Excel.Visible = true;
   %# create new XLS file
   wb = Excel.Workbooks.Add();
   wb.Sheets.Item(1).Activate();%line 10
   offset = 0;

   C1 = {'NAME', 'Max', 'Min','Average'};
   %# calculate cell range to fit matrix (placed below previous one)
   cellRange = xlcalcrange('A1', offset,0, size(C1,1),size(C1,2));
   offset = offset + size(C1,1);
   %# insert matrix in sheet
   Excel.Range(cellRange).Select();
   Excel.Selection.Value =C1;


   parfor i=1:2
   %some code ,  eg :
   MAX =1
   MIN =2
   AVG=3
   name='jpg'
   row2  = { name MAX MIN AVG };
        %# calculate cell range to fit matrix (placed below previous one)
        cellRange = xlcalcrange('A1', offset,0, size(row2,1),size(row2,2));
        offset = offset + size(row2,1);
        Excel.Range(cellRange).Select();  %line32
        Excel.Selection.Value =row2;

   end

   %# parsave XLS file
   wb.SaveAs(fName,1);
   wb.Close(false);

   %# close Excel
   Excel.Quit();
   Excel.delete();
   matlabpool('close');
以上代码显示以下错误: 1.无法对parfor中的变量Excel进行分类。, 2.由于变量“offset”的使用方式,无法使用PARFOR循环运行。, 3.由于变量“Excel”的使用方式,无法使用PARFOR循环运行。, 4.“Excel”的有效索引在PARFOR循环中受到限制。, 5.呼叫被被叫方拒绝。第10行wb.Sheets.Item1.Activate;中出现错误

Pls. help to use above code so that I can create excel file which updates inside PARFOR loop and EXCEL file get saved outside PARFOR loop

从不同线程同时写入文件是不安全的。这就是为什么当你尝试做这类事情时,MATLAB会自动出错

这个问题的答案将是以下两个选项之一:

在parfor循环内,将输出写入某种独立的缓冲区,然后在parfor循环外,串行地将缓冲区写入文件。或 不要使用parfor。改为使用。
请参阅:了解更多关于parfor命令限制的信息。

太好了,很高兴我能提供帮助!