B是1×42的元胞数组,其中每个元胞是56×56的矩阵;Y是1×42的元胞数组,其中每个元胞是56×1的矩阵,想将B与Y中对应的元胞分别相乘,然后再相加,即求
Σ
B
i
Y
i
,
(
i
=
1
,
2
,
⋯
,
42
)
\Sigma B_{i}Y_{i},\quad (i=1,2,\cdots,42)
ΣBiYi,(i=1,2,⋯,42)
clear,clc
B = {ones(2),ones(2)};
Y = {ones(2,1),ones(2,1)};
r = cellfun(@mtimes,B,Y, 'UniformOutput',0); %这是分别相乘的结果
R = sum(cat(2,r{:}),2) % 这是相加的结果
★ mtimes —— 矩阵乘法
C = A*B
C = mtimes(A,B)
★ cat —— 沿指定维度串联数组
C = cat(dim, A, B)
% data - 1000 * 1 cell
% data{1} - 32 * 32 double
% 沿第3个维度串联,即合并数据
A = cat(3, data{:}); % A - 32 * 32 * 1000
% 沿第4个维度串联
B = cat(4, data{:}); % B - 32 * 32 * 1 * 1000
参考:https://www.ilovematlab.cn/thread-496546-1-1.html
--------2021.4.22 更新----------
不用就忘,记一记
对元胞内的每个元素进行相同的操作
b = {12,14,16};
fun1 = @(x)ones(x,1); % 对 b 中每个元素都进行 ones 操作
b1 = cellfun(fun1,b,'un',0);