matlab - MATLAB 中的向量到矩阵语法

标签 matlab matrix vector

有没有办法在 MATLAB 中组合 2 个向量,这样:

mat = zeros(length(C),length(S));
for j=1:length(C)
    mat(j,:)=C(j)*S;
end

使用类似于以下的普通 MATLAB 语法:

mat = C * S(1:length(S))

这给出了“内部矩阵维度必须一致错误”,因为它正在尝试进行正常的矩阵运算。这不是标准的线性代数运算,所以我不确定如何在 MATLAB 中正确表达它,但似乎不需要循环就可以实现,这在 MATLAB 中太慢了。

最佳答案

从你的描述来看,这听起来像是一个简单的矩阵运算。您只需确保 CS 的尺寸正确。 C 应为列向量(length(C)-by-1),S 应为行向量(1-by-<强>长度(S))。假设它们是正确的尺寸,只需执行以下操作:

mat = C*S;

如果您不确定它们的尺寸,这应该可行:

mat = (C(:))*(S(:)');

编辑:实际上,我对括号有些着迷。其中一些是不必要的,因为没有操作顺序问题。这是一个更简洁的版本:

mat = C(:)*S(:)';

解释:

MATLAB 中的 matrix multiplication operator 将产生 inner product(产生标量值)或 outer product(产生矩阵),具体取决于它所应用的向量的维度。

由于使用 colon operator reshape 向量参数的维度,上面的最后一个等式产生了一个外积。语法 C(:)C 的内容 reshape 为单个列向量。语法 S(:)'S 的内容 reshape 为列向量,然后将其转置为行向量。当相乘时,这会产生一个大小为 (length(C)-by-length(S)) 的矩阵。

注意:冒号运算符的这种使用适用于任何维度的向量和矩阵,允许您将它们的内容重新整形为单个列向量(这使一些操作更容易,如 this other SO question 所示).

关于matlab - MATLAB 中的向量到矩阵语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1033961/

相关文章:

java - Java 中 vector 可以引用二维数组吗?

matlab - 在 Matlab 中设置 linprog

Matlab 箱线图 : Use a specific percentile as the upper whisker OR remove redundant outliers after manual upper whisker edit

具有意外翻转的 Matlab 图像和绘图

excel - 如何将数字作为字符串写入 Excel 文件?

python - 将 `numpy.linalg.det` 作为方法添加到 `numpy.matrix`

matlab - 用随机数替换非零值

javascript - 如何快速缩放javascript中的二维数组?

matlab - 如何在 Matlab 中沿对角线重复一个向量

c++ - C++ 和 OpenCV 中多个对象的 vector 和原始类型的 vector