行列演算に対する次元

19 vues (au cours des 30 derniers jours)
S/I
S/I le 6 Mar 2022
以下のコードを書いたのですが、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 commentaires
Atsushi Ueno
Atsushi Ueno le 6 Mar 2022
意図した演算かどうかは置いといて
y = 0:0.005:0.5;
とすればxとyのサイズが等しくなり演算出来る様になります。
S/I
S/I le 6 Mar 2022
ありがとうございました!

Connectez-vous pour commenter.

Réponses (1)

Hernia Baby
Hernia Baby le 6 Mar 2022
今回はおそらくタイポかなと思われます
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]);

Catégories

En savoir plus sur 言語の基礎 dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!