matlab - Matlab矩阵向量乘法
问题描述
我对 Matlab 完全陌生,有一个简单的问题(对我来说不是那么简单):
我有一个矩阵 x:
x = 1 2 3
4 5 6
7 8 9
10 11 12
和一个向量 y:
y = 1 2 3
现在我想将数字 1 到 4 乘以向量的第一个元素,将数字 5 到 8 乘以第二个元素,将 9 到 12 乘以最后一个元素。
找不到解决办法。非常感谢任何帮助!
谢谢保罗
解决方案
如果您修改输入x
以将所有“组”设置为新输入的列xx
,例如,通过相应的转置和重塑 x
,您可以使用 (element-wise) multiplication。MATLAB 的隐式扩展允许这种(逐元素)矩阵运算。(在 MATLAB R2016b 之前,需要这样做bsxfun
。)
那将是我的解决方案:
% Inputs
x = [1 2 3; 4 5 6; 7 8 9; 10 11 12]
y = [1 2 3]
% Transpose and reshape x to set up all "groups" as new columns
xx = reshape(x.', 4, 3)
% (Element-wise) Multiplication using implicit expansion
z = xx .* y
输出:
x =
1 2 3
4 5 6
7 8 9
10 11 12
y =
1 2 3
xx =
1 5 9
2 6 10
3 7 11
4 8 12
z =
1 10 27
2 12 30
3 14 33
4 16 36
希望有帮助!
推荐阅读
- javascript - Bootbox not 不显示弹出模式
- maven - “mvn test”不会将 src/test/resources 的内容复制到输出目录?
- mapbox-gl-js - 是否可以动态添加到 kepler.gl 中的数据集
- r - 如何在条形图(ggplot)中的条形组之间添加空间
- sql - 将查询运行日期和总数保存在 HANA 数据库中的存储过程 - 每天早上 6:30 运行
- python - 为什么 concurrent.futures.ThreadPoolExecutor().submit 不立即返回?
- webpack - Webpack 开发服务器缓存清除
- javascript - 仅操作二维数组的数值
- java - 在java中向服务器发送消息
- javascript - Newsletter2Go - 用 javascript 填写表单后无法正常工作?