我试图用对角矩阵绘制曲面图,我正在尝试图的等式是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))
有人可以告诉我如何摆脱错误吗?感谢
答案 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)));