Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 MATLAB中的向量到矩阵语法

有没有一种方法可以在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) --1),而S应该是行向量(1by- length(S) )。假设它们是正确的尺寸,请执行以下操作:

mat = C*S; 如果您不确定它们的尺寸,可以使用以下方法:

mat = (C(:))*(S(:)'); 编辑:实际上,我对括号有点疯狂。其中一些是不必要的,因为没有操作顺序方面的问题。这是一个更干净的版本:

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

MATLAB中的矩阵乘法运算符将根据要应用的向量的尺寸来产生内积 (导致标量值)或外积 (导致矩阵)。

上面的最后一个方程产生一个外积,这是因为使用了冒号运算符来重塑矢量自变量的维数。语法C(:)重塑C的内容到一个单一的列向量。语法S(:)'S的内容重塑为列向量,然后将其转置为行向量。乘以后,将得到一个大小为矩阵( length(C) × length(S) )。

注意:冒号运算符的这种用法适用于任何维数的向量和矩阵,从而使您可以将它们的内容重塑为单个列向量(这使某些操作更加容易,如另一个SO问题所示 )。



更多&回答...
poster 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 03:29


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.