how to solve the error "Unable to perform assignment because the indices on the left side are not compatible with the size of the right side"

조회 수: 1 (최근 30일)
I am unable to solve the error I am facing. It's with the ax,ay, az and I think the problem is either in the way I am implementing them or in the stuff in their equations, the xs,ys,zs or the X,Y,Z. Please if someone can have a look at the code below I commented which line the error is. Maybe someone can advise me how to fix it. Thanks.
clear all;
clc;
load data3.csv
c=299792458;
newdata=[];
shj=1;
i=1;
N=1;
SecOfDay=30;
counter_1=0; %counts how many rows belongs to the same seocnds in the data
for S=1:length(data3)
if(data3(S,6)>15)
newdata(i,:)=data3(S,:);
i=i+1;
end
end
while N<length(newdata)
for r=1:length(newdata)
if(SecOfDay==newdata(r,1))
counter_1=counter_1+1;
end
xs=newdata(N:counter_1,3);
ys=newdata(N:counter_1,4);
zs=newdata(N:counter_1,5);
dist=newdata(N:counter_1,6);
end
Fun = @(u) [sqrt((xs-u(1)).^2 + (ys-u(2)).^2 + (zs-u(3)).^2) - (c*u(4)) - (dist)];
x0 = [0;0;0;0];
u = lsqnonlin(Fun,x0);
SecOfDay=SecOfDay+30;
X=u(1);
Y=u(2);
Z=u(3);
ERROR=u(4);
r= sqrt((xs-X).^2-(ys-Y).^2-(zs-Z).^2);
ax(N:counter_1)=(xs-X)/r; %the error is at this line
ay(N:counter_1)=(ys-Y)/r;
az(N:counter_1)=(zs-Z)/r;
N=counter_1+1;
H=[ax ay az 1];
for i=N:counter_1
HH=[H; ax(i) ay(i) az(i) 1];
end
end
  댓글 수: 4
Image Analyst
Image Analyst 2021년 7월 23일
편집: Image Analyst 2021년 7월 23일
Sorry I can't help:
'lsqnonlin' requires Optimization Toolbox.
Error in test3 (line 40)
u = lsqnonlin(Fun,x0);
However, I did add that to the Product list so that others without the toolbox won't waste their time.

댓글을 달려면 로그인하십시오.

답변 (1개)

KSSV
KSSV 2021년 7월 23일
The error is clear, this error pops out when you are trying to save more number of elements than the initialized array.
Example:
A = zeros(5,5) ; % A is 5*5 matrix initialized
A(1,:) = rand(1,5) ; % no error as 5 elements are saved
A(2,:) = rand(1,7) ; % error becuase in second row of A should have 5 elemnts
Check the matrix you have intiliazed. If you are not aware of of the dimensions, store them in a cell array.
A = cell(5,1) ;
A{1} = rand(1,5) ;
A{2} = rand(1,6) ;

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by