Matlab中3行4列矩阵与1行4列向量按列相减的实现方法
Matlab 矩阵按列减行向量实现代码
你需要的运算属于行向量广播后逐元素相减场景,Matlab有两种常用实现方式:
方法1:隐式广播(推荐,适用于R2016b及以上版本)
高版本Matlab支持自动维度匹配的隐式广播,直接写相减表达式即可:
% 定义3行4列的矩阵A A = [1 3 4 5; 4 8 11 7; 2 1 7 3]; % 定义1行4列的行向量B B = [1 1 2 5]; % 直接相减,Matlab自动将B沿行维度复制为3行4列矩阵后逐元素运算 C = A - B; % 输出结果验证 disp(C)
方法2:bsxfun函数实现(兼容所有Matlab版本)
如果使用R2016a及更早版本,没有隐式广播特性,可以用bsxfun函数指定运算规则实现:
A = [1 3 4 5; 4 8 11 7; 2 1 7 3]; B = [1 1 2 5]; % @minus指定减法运算,自动完成维度匹配后计算 C = bsxfun(@minus, A, B); disp(C)
两种方法运行后得到的C都和你给出的预期结果完全一致:
0 2 2 0 3 7 9 2 1 0 5 -2
内容的提问来源于stack exchange,提问作者faty
相关产品推荐
相关产品推荐

