How can I plot a figure with multiplying a vector with matrices?

How can I plot the below figure in matlab?
I tried the below source code:
[X,Y] = meshgrid(-6:0.1:6);
Z = [X Y].*[2 1;1 3].*([X Y].') + [1 2].*[X Y].' + 3;
surf(X,Y,Z)
colormap(jet)
colorbar
and
[X,Y] = meshgrid(-6:0.1:6);
Z = [X Y]*[2 1;1 3]*([X Y].') + [1 2]*[X Y].' + 3;
surf(X,Y,Z)
colormap(jet)
colorbar
However, it showed the errors:
Error using .*
Matrix dimensions must agree.
Error in Fig20_3 (line 2)
Z = [X Y].*[2 1;1 3].*([X Y].') + [1 2].*[X Y].' + 3;
and
Error using *
Inner matrix dimensions must agree.
Error in Fig20_3 (line 2)
Z = [X Y]*[2 1;1 3]*([X Y].') + [1 2]*[X Y].' + 3;

回答 (2 件)

Walter Roberson
Walter Roberson 2020 年 7 月 29 日

1 投票

This is a case where you need the * operator instead of the .* operator

4 件のコメント

Walter Roberson
Walter Roberson 2020 年 7 月 29 日
you will also need some reshape operations. I will post a bit later.
TRUNG HOANG
TRUNG HOANG 2020 年 7 月 29 日
編集済み: TRUNG HOANG 2020 年 7 月 29 日
I used both the * operator and the .* operator but it still showed errors. I think that the multiplication between matrix and vector is problem.
Walter Roberson
Walter Roberson 2020 年 7 月 30 日
I think it might be easiest to expand the expression:
[X,Y] = meshgrid(-6:0.1:6);
Z = X + 2*Y + X .* (2*X + Y) + Y .* (X + 3*Y) + 3;
surf(X, Y, Z, 'edgecolor', 'none')
madhan ravi
madhan ravi 2020 年 7 月 30 日
TRUNG HAONG comments:
Good.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeLine Plots についてさらに検索

質問済み:

2020 年 7 月 28 日

コメント済み:

2020 年 7 月 30 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by