for循环进行向量化吗?gydF4y2Ba

5视图(30天)gydF4y2Ba
azizullah汗gydF4y2Ba
azizullah汗gydF4y2Ba 2015年12月12日gydF4y2Ba
评论道:gydF4y2Ba azizullah汗gydF4y2Ba2015年12月16日gydF4y2Ba
大家好,我有三个循环和处理速度非常慢,我需要加快这一进程。为了这个目的,我们需要把它转换成向量。任何帮助将强烈建议。下面是代码:gydF4y2Ba
为gydF4y2Bak = 1: size_glcm_3gydF4y2Ba
应用灰度共生矩阵建立glcm_sum (k) =总和(和((:,:,k)));gydF4y2Ba
应用灰度共生矩阵建立glcm (:,:, k) = (:,:, k)。/ glcm_sum (k);gydF4y2Ba%规范化应用灰度共生矩阵建立每个gydF4y2Ba
应用灰度共生矩阵建立glcm_mean (k) =非常刻薄的((:,:,k));gydF4y2Ba%计算意味着后常态gydF4y2Ba
应用灰度共生矩阵建立glcm_var (k) = (std2 ((:,:, k))) ^ 2;gydF4y2Ba
为gydF4y2Ba我= 1:size_glcm_1gydF4y2Ba
为gydF4y2Baj = 1: size_glcm_2gydF4y2Ba
p_x (i (k) = p_x应用灰度共生矩阵建立(i (k) + (i, j, k);gydF4y2Ba
p_y (i (k) = p_y应用灰度共生矩阵建立(i (k) + (j, k);gydF4y2Ba%我为j和jgydF4y2Ba
p_xplusy (k) (i + j) 1日= p_xplusy ((i + j) 1、k)应用灰度共生矩阵建立+ (i, j, k);gydF4y2Ba
p_xminusy ((abs (i j)) + 1, k) = p_xminusy ((abs (i j)) + 1, k) +gydF4y2Ba…gydF4y2Ba
glcm (i, j, k);gydF4y2Ba
结束gydF4y2Ba
结束gydF4y2Ba
结束gydF4y2Ba
所有数组都是预先分配,size_glcm_1 size_glcm_2是512和尺寸大小size_glcm_3是1。gydF4y2Ba
3评论gydF4y2Ba
图像分析gydF4y2Ba
图像分析gydF4y2Ba 2015年12月13日gydF4y2Ba
为什么不使用var()而不是std2()平方?gydF4y2Ba

登录置评。gydF4y2Ba

接受的答案gydF4y2Ba

dpbgydF4y2Ba
dpbgydF4y2Ba 2015年12月13日gydF4y2Ba
编辑:gydF4y2BadpbgydF4y2Ba 2015年12月15日gydF4y2Ba
简化,我假定飞机片复制到一个二维数组来消除gydF4y2Ba kgydF4y2Ba 指数的表达式。下面的复制你的一系列试验的随机值的结果……gydF4y2Ba
应用灰度共生矩阵建立px =和(2);gydF4y2Ba
应用灰度共生矩阵建立py =和式(1);gydF4y2Ba
N = size_glcm_1-1;gydF4y2Ba
j = 0;gydF4y2Ba
为gydF4y2Ba我= - N: NgydF4y2Ba
j = + 1;gydF4y2Ba
pxp (j) =总和(诊断接头(fliplr应用灰度共生矩阵建立(),i));gydF4y2Ba
结束gydF4y2Ba
应用灰度共生矩阵建立pxm(1) =总和(诊断接头());gydF4y2Ba%只有一个主对角线gydF4y2Ba
为gydF4y2Bai = 1: NgydF4y2Ba
pxm (i + 1) =总和(诊断接头应用灰度共生矩阵建立()- i) +总和(诊断接头应用灰度共生矩阵建立(),i);gydF4y2Ba% + / -非对角的gydF4y2Ba
结束gydF4y2Ba
注:您可能想要一个临时的gydF4y2Ba 应用灰度共生矩阵建立fliplr ()gydF4y2Ba ;我不确定如果JIT优化器将避免做操作都通过;你可以测试和调整是必要的。gydF4y2Ba
你也可以“留兰香w /gydF4y2Ba accumarraygydF4y2Ba 和朋友去看关于消除剩余的循环;显然这不是明显在我这将有助于虽然为一个固定大小的你也许可以构建所需的索引数组先验。gydF4y2Ba
齿顶高gydF4y2Ba
好的,gydF4y2Ba accumarraygydF4y2Ba 解决方案并不像我认为这可能是…请参见下面的评论“它是如何工作的”。gydF4y2Ba
替代解决方案——gydF4y2Ba
%预赛…gydF4y2Ba
N = size_glcm_1-1;gydF4y2Ba
应用灰度共生矩阵建立[j] = ind2sub(大小(),1:元素个数应用灰度共生矩阵建立());gydF4y2Ba
idx = i + j - 1;idx(结束)= 1;gydF4y2Ba
%计算gydF4y2Ba
应用灰度共生矩阵建立px =和(2);gydF4y2Ba
应用灰度共生矩阵建立py =和式(1);gydF4y2Ba
应用灰度共生矩阵建立pxp = accumarray (idx。”);gydF4y2Ba
应用灰度共生矩阵建立pxm(1) =总和(诊断接头());gydF4y2Ba%只有一个主对角线gydF4y2Ba
为gydF4y2Bai = 1: NgydF4y2Ba
pxm (i + 1) =总和(诊断接头应用灰度共生矩阵建立()- i) +总和(诊断接头应用灰度共生矩阵建立(),i);gydF4y2Ba% + / -非对角的gydF4y2Ba
结束gydF4y2Ba
应用灰度共生矩阵建立[j] = ind2sub(大小(),1:元素个数应用灰度共生矩阵建立());gydF4y2Ba
idx = i + j - 1;idx(结束)= 1;gydF4y2Ba
应用灰度共生矩阵建立pxp = accumarray (idx。”);gydF4y2Ba%的结果gydF4y2Ba
12个评论gydF4y2Ba
azizullah汗gydF4y2Ba
azizullah汗gydF4y2Ba 2015年12月16日gydF4y2Ba
谢谢@dpb,我没有测试翻转外循环,不,我外面测试,结果是巨大的,现在Computataional时间减少! ! ! ! !gydF4y2Ba

登录置评。gydF4y2Ba

更多的答案(0)gydF4y2Ba

社区寻宝gydF4y2Ba

找到宝藏在MATLAB中央,发现社区如何帮助你!gydF4y2Ba

开始狩猎!gydF4y2Ba