[英]Matlab: how to plot a stacked 3D bar plot in (x,y,z)-coordinates?
[英]how to plot x,y,z in matlab?
我正在Matlab中制作高斯-喬丹方法,我想繪制這些方程式
x + y + 4*z = -1
-2*x – y + z= -5
3*x-2*y+3*z=-4
要查看它們在圖形的哪一點相交,但我不知道如何在Matlab中繪制
這是你想要的?
clc
clear
close all
%// Generate x and y values to plot from.
[x,y] = meshgrid(linspace(0,10,100),linspace(0,10,100));
%// Get equation for plane; i.e. z position
z1 = 0.25.*(-1-x-y);
z2 = -5+y+2*x;
z3 = (-4-3.*x+2.*y)./3;
%// Use surf to generate surface plots
figure;
surf(x,y,z1,'linestyle','none','facealpha',0.4)
hold on
surf(x,y,z2,'linestyle','none','facealpha',0.4)
surf(x,y,z3,'linestyle','none','facealpha',0.4)
hold off
%// Use to manually rotate the plot
rotate3d on
這給出了:
您當然可以使用“ FaceAlpha”屬性來使事情變得更清晰。 看看沖浪功能的更多選擇。
編輯:替代@rayryeng解決方案來解決x,y和z,您可以使用mldivide :
A = [1 1 4;-2 -1 1;3 -2 3];
B = [-1;-5;-4];
X = mldivide(A,B)
X =
1.0000
2.0000
-1.0000
這就是我如何繪制這些飛機的圖。 surf
的第4個參數可讓您指定顏色。
% // create function handles of form z = f(x,y)
f1 = @(X,Y) 1/4*(-1 - X -Y);
f2 = @(X,Y) -5 + 2*X + Y;
f3 = @(X,Y) 1/3*(-4 -3*X + 2*Y);
% // create a 2d-grid to plot the functions over
x = linspace(-5, 5, 10);
y = linspace(-10, 10, 20);
[X,Y] = meshgrid(x,y);
% // plot the planes in different colors (4th argument) and without edges
figure
surf(X, Y, f1(X,Y), ones(size(f1(X,Y))), 'EdgeColor', 'None');
hold on
surf(X, Y, f2(X,Y), ones(size(f2(X,Y)))*2, 'EdgeColor', 'None');
surf(X, Y, f3(X,Y), ones(size(f3(X,Y)))*3, 'EdgeColor', 'None');
legend('plane1', 'plane2', 'plane3')
xlabel('x'), ylabel('y'), zlabel('z')
盡管這不是繪圖,但也許您也可以使用。 如果要確定這些方程式的同時解,請考慮使用solve
syms x y z
A = solve('x + y + 4*z == -1', '-2*x - y + z == -5', '3*x - 2*y + 3*z == -4')
disp([A.x A.y A.z]);
[ 1, 2, -1]
這將檢查您的高斯-喬丹消除法是否正確。 如果您不喜歡使用solve
,則可以使用線性代數來幫助您解決這個問題。 只需將系統系數放置在矩陣和向量中,然后找到矩陣的逆數並乘以向量即可。
A = [1 1 4; -2 -1 1; 3 -2 3];
b = [-1;-5;-4];
x = A \ b
x =
1.0000
2.0000
-1.0000
...甚至另一種方法是使用rref
將系統縮減為行減少的梯形形式。 這是將高斯-約旦消除成功應用於線性系統后的結果。 因此:
A = [1 1 4; -2 -1 1; 3 -2 3];
b = [-1;-5;-4];
rref([A b])
ans =
1 0 0 1
0 1 0 2
0 0 1 -1
閱讀上面的答案, x = 1
, y = 2
, z = -1
。 這表示增廣系統,其中前三列表示系統系數,第四列表示線性方程組的右側。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.