如题
这个学期刚学的matlab,还没学多清楚就被作业题整麻了,这个就是其中之一,
原题目大概是知道四个同步卫星的位置(ai,bi,ci) ,(i=1,2,3,4,)要求地球上一个点的位置(x,y,z)
还知道这个点到同步卫星分别的位置di,(i=1,2,3,4)
代码如下
clear;
[x y z]=[0 0 0];
a=[15600 18760 17610 19170];
b=[7540 2750 14630 610];
c=[20140 18610 13480 18390];
d=[22167.124 22604.821 24013.845 22670.775];
%a,b,c,d都是题中给的数据,可以替换的所以没有直接写进方程而单开了几个数组
eqs=[(x-a(1))^2+(y-b(1))^2+(z-c(1))^2-d(1) ...
(x-a(2))^2+(y-b(2))^2+(z-c(2))^2-d(2) ...
(x-a(3))^2+(y-b(3))^2+(z-c(3))^2-d(3) ...
(x-a(4))^2+(y-b(4))^2+(z-c(4))^2-d(4)]
%其实就是三维的距离公式改了一下
[xi yi zi]=fsovle(eqs,[x,y,z])
运行结果及报错内容 如下
输出参数太多。
出错 t6_3 (第 2 行)
[x y z]=[0 0 0];
不明白这个参数太多指的是什么,以及要修改的话该改哪里
右侧[0 0 0]是一个vector,只能赋值个一个变量,就像定义a,b,c,d那样,而左侧表示三个变量x,y,z。你要赋初值就老老实实写x=0, y=0,z=0。
而且13行等号左边写得也不对,你这样写左侧是接受三个参数。
中括号里是常数表示一个矩阵或向量,中括号里是变量表示多个变量的列表,含义是不一样的。