What happened to my solver script?

2 次查看(过去 30 天)

I am studying the calculation of GPS coordinates. I am expecting matlab giving me the origin and zero clock offset. However Matlab hangs and unable to solve.

syms x y z t
sv1 = [1 0 0];
sv2 = [0 1 0];
sv3 = [0 0 1];
sv4 = [1 1 1];
prange = [1 1 1 sqrt(3)];
pos = solve( ...
'((x-sv1(1))^2 + (y-sv1(2))^2 + (z-sv1(3))^2)^0.5 + t = prange(1)', ...
'((x-sv2(1))^2 + (y-sv2(2))^2 + (z-sv2(3))^2)^0.5 + t = prange(2)', ...
'((x-sv3(1))^2 + (y-sv3(2))^2 + (z-sv3(3))^2)^0.5 + t = prange(3)', ...
'((x-sv4(1))^2 + (y-sv4(2))^2 + (z-sv4(3))^2)^0.5 + t = prange(4)', x, y, z, t);

采纳的回答

Steven Lord
Steven Lord 2017-6-14
Don't pass char vectors into solve. If you're using release R2012a or later, use == to create your equations. We started warning about passing char vectors into solve in release R2015a, according to the Release Notes.
  1 个评论
imcuser1
imcuser1 2017-6-14
Thank you. Yes I use 2013a. Managed to make it work.
clear all; clc;
syms x y z t
sv1 = [1 0 0];
sv2 = [0 1 0];
sv3 = [0 0 1];
sv4 = [1 1 1];
prange = [1.1 1.1 1.1 sqrt(3.63)];
[a, b, c, d] = solve( ...
((x-sv1(1))^2 + (y-sv1(2))^2 + (z-sv1(3))^2)^0.5 + t == prange(1), ...
((x-sv2(1))^2 + (y-sv2(2))^2 + (z-sv2(3))^2)^0.5 + t == prange(2), ...
((x-sv3(1))^2 + (y-sv3(2))^2 + (z-sv3(3))^2)^0.5 + t == prange(3), ...
((x-sv4(1))^2 + (y-sv4(2))^2 + (z-sv4(3))^2)^0.5 + t == prange(4), x, y, z, t);

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Physical Units 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by