gpt4 book ai didi

matlab - 内部矩阵维度必须一致?

转载 作者:太空宇宙 更新时间:2023-11-03 19:48:40 24 4
gpt4 key购买 nike

这是我的第一个 matlab 脚本,所以这个问题可能看起来很基础而且非常明显,但我现在有点卡住了。

我有一个两行的 matlab 脚本:

x = linspace(0,4*pi,100);
y = exp(-x) * sin(x);

我要完成 Mathworks 上的创建二维线图教程。我想在 0 到 4pi 的范围内绘制 f(x) = e^(-x)sin(x),但我在第二行得到一个内部矩阵维度必须一致的错误。我不确定发生了什么,因为我不认为我现在正在创建任何矩阵。任何帮助,将不胜感激!我缺少一些简单的语法吗?谢谢!

最佳答案

这是一个很容易解决的错误,我承认这是大多数 MATLAB 程序员在第一次面对 MATLAB 时都会遇到的常见错误。具体来说,当您执行此行时:

y = exp(-x) * sin(x);

此操作假设您将执行矩阵乘法。您真正想要做的是逐个元素 操作。您希望 exp(-x) 中的点与 sin(x) 中的相应元素相乘。 @ellieadam 为您提供了一些很好的链接来查看这些操作是什么,但是如果您想逐个元素地进行操作,则需要添加一个 (. ) 之前 乘法运算符。因此,您需要改为这样做:

y = exp(-x) .* sin(x); %// Note the dot!

这条线现在应该可以工作了。


作为对您的奖励,这里有一个简单的示例。假设我有这两个矩阵:

A = [1 2;
3 4];

B = [4 3;
2 1];

通过在 MATLAB 中执行 A * B,您将获得:

>> A * B

ans =

8 5
20 13

请注意,这将执行矩阵乘法。通过执行 A .* B,这就是我得到的:

>> A .* B

ans =

4 6
6 4

此语句的不同之处在于,A 中的一个元素乘以 B 中的相应元素A 的第一行第一列乘以 B 的第一行第一列,输出矩阵中的相同位置就是存储此结果的位置。您可以跟随输出矩阵中的其他元素,它会给您相同的行为。还有其他逐元素运算,例如除法和取幂。加法和减法本质上是逐个元素的,因为根据定义以这种方式对矩阵执行这些操作。

要添加到@ellieadam 的帖子,请查看这篇 MathWorks 帖子,它专门向您展示了矩阵和向量的各种运算,包括逐元素运算:

http://www.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html

关于matlab - 内部矩阵维度必须一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25778027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com