Rez*_*a_M 1 arrays matlab cell
我有两个单元格数组:A = {<16x1 double>,<37x1 double>,<43x1 double>}和B = {<16x1 double>,<37x1 double>,<43x1 double>}.现在,我想用单元格数组B的相应元素划分单元格数组A的每个元素,反之亦然!如果单元阵列B的元素大于单元阵列A的元素,则该偏差应为B./A,然后计算这些值的平方根.对于Two矩阵,我知道我可以简单地编写以下代码:
if(a > b )
ratio= sqrt(a ./ b);
else
ratio= sqrt(b ./ a);
end
Run Code Online (Sandbox Code Playgroud)
但我不知道如何扩展此算法的单元格数组?我知道我可以定义两个for循环来访问单元格数组的每个向量,然后应用我的上面的代码,但是这个算法太慢了,因为我编写了像我提到的代码,所以它对大单元格数组没有用.看到它真的糟透了!THX为您提供帮助
使用cellfun
结合max
并min
实现您想要的:
C = cellfun(@(x,y)sqrt(max(x,y)./min(x,y)), A, B, 'uniformOutput',false)
Run Code Online (Sandbox Code Playgroud)
cellfun
将函数应用于单元格的每个元素(分别为长度为16,37和43的三个数组).'UniformOutput', false
表示应在具有与输入相同数量的元素的单元数组中返回输出.
@(x,y)
表示一个匿名函数,它接受两个输入参数(来自A
和的相应数组B
).
max(x,y)
取最大值阵列的对应元件的x
和y
,从而保证你总是有在分割的分子中的最大值.
归档时间: |
|
查看次数: |
316 次 |
最近记录: |