Parallel processing 如何在matlab parfor循环中切片该矩阵?

Parallel processing 如何在matlab parfor循环中切片该矩阵?,parallel-processing,matlab,Parallel Processing,Matlab,我有一个下面的matlab代码,我不知道如何切片称为数据的矩阵 简而言之,代码的作用是: 在每次迭代中,创建一个名为newOrder和 使用重新排序的向量y和重新排序的矩阵数据调用函数列。 在这里,重新排序使用所有元素,而不是它们的子集。循环运行得快是至关重要的,所以我担心这个警告 w = []; data = sparse(double(X(:,selTrain))); parfor ci = 1:length(classes) y = 2*(imageClass(selTrain)

我有一个下面的matlab代码,我不知道如何切片称为数据的矩阵

简而言之,代码的作用是:

在每次迭代中,创建一个名为newOrder和 使用重新排序的向量y和重新排序的矩阵数据调用函数列。 在这里,重新排序使用所有元素,而不是它们的子集。循环运行得快是至关重要的,所以我担心这个警告

w = []; data = sparse(double(X(:,selTrain)));

parfor ci = 1:length(classes)
    y = 2*(imageClass(selTrain)==ci)'-1;   
    newOrder = [find(y==1); find(y==-1)];
    this_svm = train(y(newOrder), data(:, newOrder), ' -s 3 -B 1 -c 10 -q', 'col');    
    w(:,ci) = this_svm.w';
end
我没有得到一个错误,但得到一个警告:变量数据在parfor循环中被索引,但没有切片。这可能会导致不必要的通信开销

我需要这样做组合许多重新排序。 所以我花了很多时间毫无希望地尝试了很多东西。。 任何帮助或建议都会很好


谢谢。

我想你已经解决了这个问题;但是,为了完整性,问题在于用于索引数据的neworder与parfor循环索引ci的关系不允许对数据进行切片。此失败的直接原因是neworder是一个向量而不是标量。这会立即阻止matlab切片数据。即使情况并非如此,当matlab无法将循环索引ci与变量索引neworder关联时,也无法对数据进行切片

您想并行计算数据矩阵的所有阶数以同时运行多个SVM序列吗?我不太清楚。你能给我更多的细节吗?不是所有的数据顺序。对于每个类,我想对数据矩阵重新排序并调用train函数。您得到的错误到底是什么?你能把这个加到你的问题上吗?