行列演算に対する次元

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 Center および File Exchange言語の基礎 についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!