Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何计算和绘制垂直于已知向量并通过已知点的平面?_Matlab_Linear Algebra - Fatal编程技术网

Matlab 如何计算和绘制垂直于已知向量并通过已知点的平面?

Matlab 如何计算和绘制垂直于已知向量并通过已知点的平面?,matlab,linear-algebra,Matlab,Linear Algebra,我想画一个垂直于向量的平面,然后用Matlab通过一个点。 我的向量有坐标v1=[2,i],我的点有坐标com\u m1=[1,i] 我试过两种方法: xx=(-15:-6:0.25); yy=(-10:-2:0.25); for i = 1:length(xx) for j = 1:length(yy) zz_m1(j,i)=(v1(2,2)*(xx(i) - com1(1,1)) + v1(2,2)*(yy(j)-com1(1,2)))/v1(2,3) + c

我想画一个垂直于向量的平面,然后用Matlab通过一个点。 我的向量有坐标
v1=[2,i]
,我的点有坐标
com\u m1=[1,i]

我试过两种方法:

xx=(-15:-6:0.25);
yy=(-10:-2:0.25);
for i = 1:length(xx)
    for j = 1:length(yy)
            zz_m1(j,i)=(v1(2,2)*(xx(i) - com1(1,1)) + v1(2,2)*(yy(j)-com1(1,2)))/v1(2,3) + com1(1,3);
    end
end
surf(xx,yy,zz_m1, 'FaceColor','red','EdgeColor','none') % Plotting the surface

但两者都不起作用。谁能帮我理解我做错了什么?
谢谢

您的代码中存在一些问题。最大的是这一行,
xx=(-15:-6:0.25)
它生成一个空矩阵,当您请求一个从
-15
开始并继续到
-Inf
的向量时

如果您不理解错误,那么您可能应该阅读您的矩阵
yy
xx
有相同的问题

此外,我认为你对飞机的计算是错误的。我使用随机生成的
v1
com1
在本地尝试了您的代码,但线条与平面不垂直


下面是一个很好的解释,说明了如何计算通过一个点并垂直于已知向量的平面的方程:(向下滚动到平面是曲面)

代码中有一些问题。最大的是这一行,
xx=(-15:-6:0.25)
它生成一个空矩阵,当您请求一个从
-15
开始并继续到
-Inf
的向量时

如果您不理解错误,那么您可能应该阅读您的矩阵
yy
xx
有相同的问题

此外,我认为你对飞机的计算是错误的。我使用随机生成的
v1
com1
在本地尝试了您的代码,但线条与平面不垂直


下面是一个很好的解释,说明了如何计算一个平面的方程,该平面通过一个点并垂直于一个已知向量:(向下滚动到一个平面是一个曲面

什么意思是不起作用?你有错误吗?如果是这样,那是什么错误?我的意思是我只得到了一个空白图,但没有错误message@user1338219你的代码是如何运行的?您正在尝试访问
v1(2,2)
,而您将
v1
定义为
v1=[2,i]
,它仅为1乘2。同样的评论也适用于
com1
@EitanT抱歉,也许我解释错了:我的意思是v1被定义为矩阵:[x1 y1 z1 x2 y2 z2],所以当我访问v1(2,2)时,我的意思是y2。Com1也一样你什么意思没用?你有错误吗?如果是这样,那是什么错误?我的意思是我只得到了一个空白图,但没有错误message@user1338219你的代码是如何运行的?您正在尝试访问
v1(2,2)
,而您将
v1
定义为
v1=[2,i]
,它仅为1乘2。同样的评论也适用于
com1
@EitanT抱歉,也许我解释错了:我的意思是v1被定义为矩阵:[x1 y1 z1 x2 y2 z2],所以当我访问v1(2,2)时,我的意思是y2。同样适用于Com1感谢您的回复。事实上,我创建的矩阵是错误的,因为我认为语法是[start:stop:interval],而不是[start:interval:stop]:一旦解决了matlab对平面的polts问题。我检查了我的方程式,确实有一个符号错误。非常感谢你的答复。事实上,我创建的矩阵是错误的,因为我认为语法是[start:stop:interval],而不是[start:interval:stop]:一旦解决了matlab对平面的polts问题。我检查了我的方程式,确实有一个符号错误。非常感谢你
[xx, yy]=meshgrid(-15:-6:0.25,-10:-1:0.25);
zz_m1=(v1(2,2)*(xx - com1(1,1)) + v1(2,2)*(yy-com1(1,2)))/v1(2,3) + com1(1,3);
surf(xx,yy,zz_m1, 'FaceColor','red','EdgeColor','none')