【MATLAB】关于两个元胞数组相对应的元胞分别相乘的问题、沿指定维度串联矩阵

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);
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值