我有这行代码
clear MUCV
for c = 1:size(CVV,2)
r = 1:size(CVV,1);
MUCV(r,c) = (round(100*median(abs(CVV{c}(CCC{c}>0.8))))/100);
end
其中CVV
和CCC
是包含单元格的两个相等矩阵,我必须将该计算应用于每个单元格。
问题在于,对于循环这个计算仅针对第一行进行计算,然后在MUCV
中复制r
多次,如{I} MUCV(r,c) = (round(100*median(abs(CVV{r,c}(CCC{r,c}>0.8))))/100);
中所指定的那样,如果我添加{r和c }
cmake-gui
它给了我错误。
提前感谢您,希望它足以解释问题
答案 0 :(得分:0)
如果我理解正确,您希望从CVV{c}
中提取与约束CCC{c}>0.8
匹配的所有元素。我认为Matlab不会允许你以一步的方式做到这一点,你必须分步完成。
问题在于r
。您必须创建一个嵌套的for循环,以便根据索引c
和r
扫描每个元素,如下所示:
for c = 1:size(CVV,2)
for r = 1:size(CVV,1);
% do something
end
end
但你必须编辑内线,因为我认为它不会起作用。也许尝试像
这样的东西for c = 1:size(CVV,2)
for r = 1:size(CVV,1);
SelectedCVV=CVV{r,c};
MUCV(r,c) = (round(100*median(abs(SelectedCVV(CCC{r,c}>0.8))))/100);
end
end
您也可以使用cellfun()
代替嵌套循环来获得相同的结果。此功能允许您对单元阵列中的每个单元执行相同的功能。在你的情况下,你应该添加像
MUCV=cellfun(@(x,y) round(100*median(abs(x(y>0.8))))/100,CVV,CCC)
其中x
和y
是({1}}和CVV
中的单个单元格。