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 2 q 公式在上一个术语中不匹配。哪个是正确的? 【参考方案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】:

这里有很多错误,

您首先检查TV 是否符合您的预期。在工作区中检查它们。首先你会发现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 中的 java

在八度音程中运行 matlab 项目时,mex 函数未定义错误

matlab mex clang C++11线程->未定义符号错误

来自 GCC 的未定义参考错误使用带有 std::vector 和特征矩阵的模板?

编译的 MATLAB 错误:“struct”类型的输入参数的未定义函数“ft_datatype_sens”

对于循环和矩阵迭代问题:TypeError:无法读取未定义的属性“0”