Clear Filters
Clear Filters

What happened to my solver script?

2 views (last 30 days)
imcuser1
imcuser1 on 14 Jun 2017
Commented: imcuser1 on 14 Jun 2017

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);

Accepted Answer

Steven Lord
Steven Lord on 14 Jun 2017
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 Comment
imcuser1
imcuser1 on 14 Jun 2017
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);

Sign in to comment.

More Answers (0)

Categories

Find more on Physical Units in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!