行列演算に対する次元

19 次查看(过去 30 天)
S/I
S/I 2022-3-6
以下のコードを書いたのですが、zの条件式において「行列演算に対する次元が正しくありません」と出力されます。どのようにすればよいですか。
x = 0:100;
y = 0:0.01:0.5;
A = 10.71
B = 2910
C = 14.27
D = 590.1
E = 1.635
F = 0.06544
G = 3.700
[x,y] =meshgrid(x,y);
z= A*x*y.^3 + B*y.^3 + C*x.*y.^2 + D*y.^2 + E*x.*y + F*x + G*y;
surf(x,y,z);
xlabel('x');
ylabel('y');
zlabel('z');
view([60,48]);
  2 个评论
Atsushi Ueno
Atsushi Ueno 2022-3-6
意図した演算かどうかは置いといて
y = 0:0.005:0.5;
とすればxとyのサイズが等しくなり演算出来る様になります。
S/I
S/I 2022-3-6
ありがとうございました!

请先登录,再进行评论。

回答(1 个)

Hernia Baby
Hernia Baby 2022-3-6
今回はおそらくタイポかなと思われます
A*x*y.^3 の x*y を x.*y に変更してみてください
「.*」でない場合は行列演算になり「51×101の行列」*「51×101の行列」なのでエラーが起きます
clear,clc;
x = 0:100;
y = 0:0.01:0.5;
A = 10.71;
B = 2910;
C = 14.27;
D = 590.1;
E = 1.635;
F = 0.06544;
G = 3.700;
[x,y] =meshgrid(x,y);
% z= A*x*y.^3 + B*y.^3 + C*x.*y.^2 + D*y.^2 + E*x.*y + F*x + G*y;
z= A*x.*y.^3 + B*y.^3 + C*x.*y.^2 + D*y.^2 + E*x.*y + F*x + G*y;
figure
surf(x,y,z);
xlabel('x');
ylabel('y');
zlabel('z');
view([60,48]);
ちなみに正方行列での計算では当たり前ですが、z軸の値が変わります
x = 0:100;
y = 0:0.005:0.5;
[x,y] =meshgrid(x,y);
z= A*x*y.^3 + B*y.^3 + C*x.*y.^2 + D*y.^2 + E*x.*y + F*x + G*y;
figure
surf(x,y,z);
xlabel('x');
ylabel('y');
zlabel('z');
view([60,48]);

类别

Help CenterFile Exchange 中查找有关 言語の基礎 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!