作业帮 > 综合 > 作业

MATLAB 画三维图形问题

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/13 07:26:59
MATLAB 画三维图形问题
我用最小二乘法生成的函数for fx=fx+(X*(x(i,:)).'-y(i,1)).^2; 我想用MATLAB直接画图三维图 但是结果不对
比如说我生成的是fx=x1^2+x2^2 画出的三维图就不对 但是如果 这么写fx=x1.^2+x2.^2就对 可是生成的就是不带点乘
MATLAB 画三维图形问题
当然要用点乘了
点乘表示矩阵相应位置相乘
比如[1 2;3 4].*[1 2 ;3 4]=[1 4;9 16]
直接平方相当于计算[1 2;3 4]*[1 2; 3 4] =[7 10;15 22];
[x,y]=meshgrid(x,y)之后得到的两个矩阵x y的每个对应点都是相应每个点的x,y坐标
所以这里当然得用点乘啊
再问: 可是我用坐标生成的函数是 y=x1^2+x2^2;这该怎么办呢
再答: 最笨的方法可以自己写两层循环每个点计算然后plot hold on
PS:最小二乘法得到的不是系数吗?
再问: 错了 是梯度下降。。。我嵌套的一次for 得到了损失函数 但是得到的不是点乘
再答: 你的意思是运算直接得到了没有点乘方式的函数?
那就直接用plot3来画图
两层循环就行了
PS:你得到的是内联函数??
再问: 如果两层循环 画点的话 那就没有mesh 这种效果了是吧 要是我再想画出等高线 是不是就没办法画了
得到的就是这种y=x1^2+x2^2 没点乘
再答: 你到底用的什么函数 得到的这种形式?
把代码发一下吧
再问: x=[1;1,2;1,4;1,4;1,5;1,7;1,7];

y=[2;4;6;8;9;13;14];
X=[x1,x2];
fx=0;
for i=1:leng
fx=fx+(X*(x(i,:)).'-y(i,1)).^2;
end
这样的 MATLAB我刚接触 不知道这么写行不行
再答: 如果这是你的全部代码 那就问题太多了...
矩阵x第一行就一个元素,之后每行都2有2个元素。X=[x1,x2];里面x1 x2不知道是什么。?循环的目的你是要干嘛?