MATLAB Answers

how to implement this in a better way or what is the mistake

1 view (last 30 days)
malak Osama
malak Osama on 20 Jul 2021
Commented: Jan on 23 Jul 2021
baiscally I have the excel sheet 'data3' attached above, this sheet contaians data from satellites over a 24 hour period, what I am doing is that I first need to read the coordinates of the satellite denoted by xs,yxs and zs. then we use some formula to find the coordinates for the reciever location denoted by X,Y,Z.
the two variables N and counter_1 are baisiclly the start and the end of the data for every 30 second in the 24hrs, meaning if we have N=1 and counter_1=8 this means that we have 8 values for xs,ys,zs for the first 30 second of the 24hr then we increment the N to be counter_1+1 to move the next 30 econds and so on.
Now what I need to do is to calculate the ax,ay,az for each 30 second in the 24hrs we have, then store the values in a matrix H such that each raw contains the values of ax,ay,az and 1 at the forth column (for some reason).
I am not sure if the way I am implementing the ax,ay,az is correct or not so maybe this is the issue. or maybe I need to do some manipulating with the xs,ys,zs or the X,Y,Z to make them fit in the equation.
example: to calculate ax,ay,az for the first 30 seconds, we should read the xs,ys,zs for the fisrt 30 second and use the X,Y,Z we calculate earlier and plug all this in the given equations for the ax,ay,az after that we should fill the matrix H with these values.
the error i am keep getting is
Unable to perform assignment because the indices on the left side are not compatible with the size of the right side.
Error in receiver_location3 (line 45)
ax(N:counter_1)=(xs-X)/r;
  6 Comments
malak Osama
malak Osama on 21 Jul 2021
apologizes for the mistake I am kinda a bigenner in matlab and i make a lot of mistakes.
xs =
8 1
X =
1 1
r =
8 1
N =
1
counter_1 =
8
length(N:counter_1) =
8
Unable to perform assignment because the indices on the left side are not compatible with the size of the right side.
Error in receiver_location3 (line 53)
ax(N:counter_1)=(xs-X)/r;

Sign in to comment.

Answers (1)

Jan
Jan on 21 Jul 2021
Edited: Jan on 21 Jul 2021
Use the debugger:
dbstop if error
Run your code afterwards until Matlab stops at the error. Then check:
size((xs-X)/r)
size(N:counter_1)
Does this match? You see, where the problem is and why this assignment cannot work. This should be sufficient to find the cause of the problem.
  4 Comments
Jan
Jan on 23 Jul 2021
I do not understand, what this line of code should do. Seeing a failing code does not allow to fix it (usually), but an exact description of the purpose is required.
What does "still did not work" mean?
In (xs-X)/r xs is [1 x 8], X is scalar, r is [1 x 8] and the wanted output is [1 x 8]. So what do you want to calculate and why does (xs-X) . /r "still not work"?

Sign in to comment.

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!