如何在MATLAB中生成向量vec(x)?

如何在MATLAB中生成向量vec(x)?,matlab,vector,Matlab,Vector,我试图复制这个公式: 我已经收集了工作区中的所有变量。然而,估计向量(θ)似乎不起作用,所以我有点卡住了 Theta = A*B-C; vTheta = vec(Theta'); 定义了A、B和C。问题是,MATLAB似乎不知道函数vec来做我想用Theta做的事情,就像公式中那样 如何解决这个问题?我不知道这个方程是从哪里来的,但是vec是R中的一个函数,也许它与R有关?如果要将矩阵Theta转换为向量,请执行以下操作 Theta(:) 编辑:如果您需要首先转置矩阵,MATLAB可能不

我试图复制这个公式:

我已经收集了工作区中的所有变量。然而,估计向量(θ)似乎不起作用,所以我有点卡住了

Theta = A*B-C;
vTheta = vec(Theta');
定义了
A
B
C
。问题是,MATLAB似乎不知道函数
vec
来做我想用
Theta
做的事情,就像公式中那样


如何解决这个问题?

我不知道这个方程是从哪里来的,但是
vec
是R中的一个函数,也许它与R有关?如果要将矩阵
Theta
转换为向量,请执行以下操作

Theta(:)
编辑:如果您需要首先转置矩阵,MATLAB可能不允许您执行
Theta'(:)
。而是分两步进行:

tmp = Theta'; tmp(:)
如上所述,是将定义的变量矢量化的方法

然而,有时我们想要将变量的子集矢量化。
假设我们有一个矩阵-
mA
,我们想把它的一个子部分向量化-
mA(2:3,4:7)

一种方法是定义新变量并将其矢量化:

vA = mA(2:3, 4:7);
vA = vA(:);
但是,如果我们只想在另一个表达式中使用它,并且只使用一次,会怎么样 我们可以不需要生成显式变量吗

很遗憾,MATLAB没有中那样的功能。
但是,如果您想避免显式命名新变量(我不确定MATLAB的JIT引擎是否也能像Julia一样使内存分配无效),您可以这样做:

reshape(mA(2:3, 4:7), [], 1)
reshape(mA(2:3, 4:7), 1, []) * reshape(mA(2:3, 4:7), [], 1, )
这将始终生成一个列向量。
您还可以使用:

reshape(mA(2:3, 4:7), 1, [])
生成行向量

例如,您可以执行以下操作:

reshape(mA(2:3, 4:7), [], 1)
reshape(mA(2:3, 4:7), 1, []) * reshape(mA(2:3, 4:7), [], 1, )

这将是这些元素的平方值之和。

这是源代码:这是我从中获得的论文(第29页pdf和第173页论文),这是您试图运行的MATLAB代码吗?实际上,它使用的是
vec
。我刚刚了解到,倍频程还定义了一个函数
vec
。我以前从未见过这个。生活和学习。在任何情况下,八度音阶的向量都和我在答案中写的一样。我需要做的就是:我知道。这就是
Theta(:)
对矩阵
Theta
的作用。试试看,非常感谢!你有时间回答最后一个问题吗?这是我在源代码中发现的“最后一个”错误:[junk,ST]=nwse(e,X,nlags);这给了我一个错误,即存在“太多输出参数”,但在我删除“垃圾”并从中提取[ST]时,它似乎起作用。但是因为我的脚本运行得很好,它是否仍然给出了它应该给出的结果?我在代码[junk,ST]=nwse(e,X,nlags)中两次看到这一“错误”行;和[垃圾,S]=nwse(e,one(T,1),nlags);