Matlab 未定义的“矩阵”错误
Posted
技术标签:
【中文标题】Matlab 未定义的“矩阵”错误【英文标题】:Matlab undefined 'matrix' errors 【发布时间】:2014-03-19 08:10:44 【问题描述】:我需要帮助解决一个 matlab 问题,这是过去几天我的想法。
好的。我必须生成一个与水平向量T
和垂直向量V
相对应的矩阵。
T = [40:10:-40];
V = [10:10:60]';
并实现方程来填充矩阵/表格
q = 35.74 + 0.6215*T - 35.75*v^0.16 + 0.4275*T^0.16
所以我在 matlab 中生成的是
T = [40:10:-40];
V = [10:10:60]';
q = (35.74+(0.6215*T))-(35.75.*V.^0.16)+(0.4275.*T.*V.^0.16);
matrix((T,V)*q)
组件q抛出error using .* matrix dimensions must agree
等错误
和undefined function 'matrix' for input arguments of type 'double'
有人能把救生索扔在这里吗? 非常感谢任何帮助
谢谢
【问题讨论】:
You 2q
公式在上一个术语中不匹配。哪个是正确的?
【参考方案1】:
使用meshgrid
映射 T 和 V,然后简单地进行元素操作 -
T = [40:-10:-40]';
V = [10:10:60]';
[x,y] = meshgrid(T,V);
q = 35.74 + 0.6215.*x - 35.75.*y.^0.16 + 0.4275.*x.^0.16
我认为这就是您要找的,因为我也必须纠正一些错误。
【讨论】:
感谢您为疯狂提供了一个简化的解决方案,学到了新东西!【参考方案2】:这里有很多错误,
您首先检查T
和V
是否符合您的预期。在工作区中检查它们。首先你会发现T
是空的!这是因为你试图通过加 10 从正 40 变为负 40。所以你应该减去 10,因此:
T = 40:-10:40;
请注意,您不需要 []
,实际上 mlint 会告诉您。
在你正确定义了T
之后,你会看到它有 9 个元素,而V
只有 6 个元素。现在 .*
表示逐元素乘法,即你告诉 matlab 不要做矩阵乘法,而是将两个矩阵的每个对应元素相乘。自然地,为了做到这一点,两个矩阵需要具有相同的维度,这就是为什么您会收到 matrix dimensions must agree
错误。如果你想要实际的矩阵乘法,那么它是 T*V
而不是 T.*V
最后matrix((T,V)*q)
根本不是 Matlab 语法。我不太确定你想在这里做什么。
【讨论】:
以上是关于Matlab 未定义的“矩阵”错误的主要内容,如果未能解决你的问题,请参考以下文章
在八度音程中运行 matlab 项目时,mex 函数未定义错误
matlab mex clang C++11线程->未定义符号错误
来自 GCC 的未定义参考错误使用带有 std::vector 和特征矩阵的模板?