行列演算に対する次元

10 views (last 30 days)
S/I
S/I on 6 Mar 2022
Answered: Hernia Baby on 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 Comments
S/I
S/I on 6 Mar 2022
ありがとうございました!

Sign in to comment.

Answers (1)

Hernia Baby
Hernia Baby on 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]);

Tags

Community Treasure Hunt

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

Start Hunting!