【问题标题】:Why doesn't this plot have a value of 14 at (0,0)?为什么这个图在 (0,0) 处的值不是 14?
【发布时间】:2021-03-04 05:15:52
【问题描述】:
[X,Y] = meshgrid(-10:0.5:10, -10:.5:10);
Z = 21*X^2 -34*X +  56*X*Y + 38*Y^2 -46*Y +14 ;
surf(X,Y,Z)

https://www.mathworks.com/help/matlab/ref/surf.html

我按照此处的程序进行操作,但我的地块的值是 80,000,而我希望它的值是 14。什么给出了?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    矩阵乘法与按元素定义的曲面

    感觉您的目标是进行元素乘法,而不是 矩阵乘法。逐元素乘法由点表示,. 在乘法之前,* 形成.*。如果您不指定逐元素乘法,MATLAB 将执行矩阵乘法。逐元素乘法将对应的元素相乘,而矩阵乘法遵循以下形式:MATLAB Documentation: Matrix Multiplication。第二个子图的结果确实具有 14 的值,这是通过使用 Z-surface 上的 find() 函数进行检查来确保的。

    %Matrix multiplication%
    [X,Y] = meshgrid(-10:0.5:10, -10:.5:10);
    Z = 21*X^2 -34*X +  56*X*Y + 38*Y^2 -46*Y +14 ;
    subplot(1,2,1); surf(X,Y,Z);
    title("Matrix Multiplication Surface");
    view(45,45);
    
    %Element-wise multiplication%
    [X,Y] = meshgrid(-10:0.5:10,-10:0.5:10);
    Z = 21.*X.^2 -34.*X +  56.*X.*Y + 38.*Y.^2 - 46.*Y + 14 ;
    subplot(1,2,2); surf(X,Y,Z);
    title("Element-wise Multiplication Surface Z = f(X,Y)");
    xlabel("X"); ylabel("Y")
    [Row,Column] = find(Z == 14);
    Z(Row,Column)
    view(45,45);
    

    矩阵乘法的影响可以通过术语56*X*Y 看出。这会产生一个 41 x 41 的双精度矩阵,其中填充了值 80360。

    56*X*Y
    

    【讨论】:

    • 更新脚本忘记加一个.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多