行列演算に対する次元

조회 수: 19 (최근 30일)
S/I
S/I 2022년 3월 6일
답변: Hernia Baby 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!