[英]MATLAB parfor slicing a 3D array
我正在嘗試使用parfor
加快我的代碼。 該代碼的目的是在3D圖像上滑動3D正方形窗口,並對每個mxmxm
塊應用一個函數。
我寫了這段代碼:
function [ o_image ] = SlidingWindow( i_image, i_padSize, i_fun, i_options )
%SLIDINGWINDOW Summary of this function goes here
% Detailed explanation goes here
o_image = zeros(size(i_image,1),size(i_image,2),size(i_image,3));
i_image = padarray(i_image,i_padSize,'symmetric');
i_padSize = num2cell(i_padSize);
[m,n,p] = deal(i_padSize{:});
[row,col,depth] = size(i_image);
windowShape = i_options.windowShape;
mask = i_options.mask;
parfor (i = m+1:row-m,i_options.cores)
temp = i_image(i-m:i+m,:,:);
for j = n+1:col-n
for h = p+1:depth-p
ii = i-m;
jj = j-n;
hh = h-p;
temp = temp(:,j-n:j+n, h-p:h+p);
o_image(ii,jj,hh) = parfeval(i_fun, temp, windowShape, mask);
end
end
end
end
我收到一個警告和一個我不知道如何解決的錯誤。 警告說:
整個數組或結構'i_image'是一個廣播變量。
錯誤提示:
PARFOR循環由於使用變量“ o_image”的方式而無法運行。
我不明白如何解決這兩件事。 任何幫助是極大的贊賞!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.