2014-09-07 1 views
0

Я хочу создать файл excel вне цикла parfor (в начале кода), затем обновить файл excel с каждым циклом и, наконец, сохранить файл excel в определенное место после цикла , Но я получаю некоторые ошибки. с помощью следующей команды:Создание файла EXCEL с помощью команды parfor в MATLAB для параллельной обработки

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. Переменная Excel в parfor не могут быть классифицированы, 2. Цикл PARFOR не может запустить использоваться в связи с тем, как переменной «смещения» используется ., 3. Петля PARFOR не может использоваться из-за использования переменной «Excel». 4. Допустимые индексы для «Excel» ограничены в цикле PARFOR., 5. Звонок был отклонен с помощью callee.Error в строка 10 (wb.Sheets.Item (1) .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 

ответ

0

Нельзя записывать файл одновременно из разных тем. Вот почему MATLAB будет автоматически ошибаться, когда вы пытаетесь делать подобные вещи.

Ответ на этот вопрос будет одним из двух:

  1. В цикле parfor, писать свои выходы в какой-то независимых буферов, а затем вне цикла parfor записи буфера в файл, серийно. Или,
  2. Не используйте parfor. Вместо этого используйте for.

Посмотрите на следующее: http://blogs.mathworks.com/loren/2009/10/02/using-parfor-loops-getting-up-and-running/, чтобы узнать больше об ограничениях команды parfor.

+0

Спасибо, я использовал первый вариант с «parfor», и он работает. – Dev

+0

Отлично, рад, что я мог бы помочь! – Shaked