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"
    4 次查看(过去 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
      
      
 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
      
      
 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) ; 
0 个评论
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


