How to use parfor

4 ビュー (過去 30 日間)
Megha SS
Megha SS 2018 年 6 月 6 日
回答済み: OCDER 2018 年 6 月 6 日

The original code is as follows, which I would like to convert to parallel using "parfor"

    for rownum=1:rows
    for size=1:half
        flip=cols-size+1
        o1=original(rownum,flip,1);
        o2=original(rownum,flip,2);
        o3=original(rownum,flip,3);
        original(rownum,flip,1)=original(rownum,size,1);
        original(rownum,flip,2)=original(rownum,size,2);
        original(rownum,flip,3)=original(rownum,size,3);
        original(rownum,size,1)=o1;
        original(rownum,size,2)=o2;
        original(rownum,size,3)=o3;
    end  
    end

Help needed, Thanks in advance.

回答 (1 件)

OCDER
OCDER 2018 年 6 月 6 日
Are you trying to flip the matrix along the 2nd dimension?
original = flip(original, 2)
Can't do parfor in your case because the indexing to original is inconsistent within the for loops, as in you cannot do this:
parfor j = 1:3
for k = 1:3
A(j, k) = -1; %MATLAB: got it, will refer to A via A(j, k) indexing
A(j, 3-k+1) = -2; %ERROR! A must be referred to via same index schemes
%Must use A(j, k) all the way through inside parfor
end
end
Also, do not override matlab built-in functions such as flip and size, as this will cause issues. To learn more about these, type this in your command window:
>> help size
>> help flip
To prevent overriding MATLAB functions accidentally, use variable names starting with Capital letters EX:
for Size = 1:half %OK! Size will not override size.m
...
end

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

製品


リリース

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by