避免使用for循环,细胞操作

2 visualizzazioni (ultimi 30 giorni)
Xh杜
Xh杜 伊尔9杂志2017
Modificato: 马特·J il 10杂志2017
你好,
我已经问过这个问题,但没有得到满意的答案,所以我改变要求的方式。
说我有一个操作是这样的:
一个= 8 [3];
aTa =“*;
> > aTa
aTa =
9日24
24日64年
然后在另一个情况下我必须分解成2细胞”,基于“增大化现实”技术的“×3 = 1 * 3和8 = 2 * 4,为了得到相同的结果作为aTa,我所要做的:
艾尔= {1 2};
基于“增大化现实”技术= {3 4};
aTa1 = 0 (2, 2);
i = 1:2
j = 1:2
l1 = al {1,};
l2 = al {1,};
r1 = ar {1, j};
r2 = ar {1,};
aTa1 (i, j) = aTa1 (i, j) + r2 * r1 * l1的* l2;
结束
结束
我的问题是,显然第二操作(循环和r2 * r1 * l1的* l2)比第一个要复杂得多(一个“*)。如果我必须分解,有更快、更紧凑的方式获得aTa1 ?会更快如果避免使用for循环,而是使用一些单元操作?
这并不工作,只有对角元素:
ata1 = cellfun (@ (l1, l2, r1, r2) r2 * r1 * l1 * l2,铝、铝、基于“增大化现实”技术,基于“增大化现实”技术,“联合国”,0);
很多谢谢!
2 Commenti
Xh杜
Xh杜 伊尔9杂志2017
是的谢谢你,我不确定是否继续编辑帖子或打开一个新帖子,然后决定打开一个新职务在旧的我只能评论。

每commentare Accedi。

Risposta accettata

马特·J
马特·J 伊尔9杂志2017
Modificato:马特·J il 10杂志2017
我的问题是,显然第二操作(循环和r2 * r1 * l1的* l2)比第一个要复杂得多(“*)。
不,它不是。第二个操作,假设这些都是行向量,可以重写,
s = (r1 * l1 ');%一个标量
aTa = s * (r2 * l2)
所以,操作只是同样的外部产品*“你正在考虑最初,但post-scaling。下载188bet金宝搏
如果我必须分解,有更快、更紧凑的方式获得aTa1 ?会更快如果避免使用for循环,而是使用一些单元操作?
所有细胞操作在内部使用for循环。没有“避免”循环利用细胞阵列。像那些回应了你以前的帖子,我认为你是找错人了。我怀疑整件事可以做最有效地使用数值数组。

稍risposte (0)

Categorie

苏Scopri di稍循环和条件语句帮助中心e文件交换

社区寻宝

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

开始狩猎!

翻译的