Matlab中的曲面图

时间:2016-04-02 05:12:51

标签: matlab plot

我试图用对角矩阵绘制曲面图,我正在尝试图的等式是f = x ^ T D x,x是2乘1矢量而D是2乘以2矩阵。

这是到目前为止,但我一直在收到错误。

x = linspace(-10,10);
y = linspace(-10,10);
[X,Y] = meshgrid(x,y);
D = [1 0; 0 1];

f = @(x,y) [x,y]*D*[x,y].'; % [x,y] is 1 by 2 

contour (X,Y,f(X,Y))

有人可以告诉我如何摆脱错误吗?感谢

1 个答案:

答案 0 :(得分:2)

由于 public void HelpTrueOrFalse (string UserName, bool trueOrFalse) { var user = context.Users .Where(o => o.UserName == UserName).SingleOrDefault(); if(user != null) { user.NeedHelp = trueOrFalse; context.SaveChanges(); } } x具有相同的长度,因此对角矩阵y必须是大小为nxn的方阵,其中n等于{{1}长度的两倍}或D向量。您需要将长度乘以2的原因是因为操作x水平连接数组,因此复制了其中一个维度。

在此示例中,y是Identity矩阵。有关详细信息,请参阅eye

[x,y]

如果您希望D成为随机对角矩阵,则可以将diag与可用的Random Number Generation函数之一结合使用,例如randn。< / p>

在上一个示例中,使用以下指令替换x = linspace(-10,10); % x is 1x100 y = linspace(-10,10); % y is 1x100 [X,Y] = meshgrid(x,y); % X is 100x100 and Y is 100x100 D = eye(2*numel(x)); % D is 2*100x2*100 = 200x200 f = @(x,y) [x,y]*D*[x,y].'; % [X,Y] is 100x200 and [X,Y].' is 200x100 contour (X,Y,f(X,Y))

D

您还可以将您选择的系数提供给对角矩阵。为此,您需要手动创建系数向量,确保它具有足够的长度,以便它满足本文开头所述的条件。

现在尝试使用以下说明替换D

D = diag(randn(1,2*numel(x)));