"index exceeds matrix dimension" error. generated when I try to implement APIT localization algorithm for wireless sensor networks. Please i need your help dear matlab users to fix this error..
1 view (last 30 days)
Show older comments
function APIT(grid_length) % Approximate Point In Triangle (APIT) Localization Algorithm
load '../Deploy Nodes/coordinates.mat';
load '../Topology Of WSN/neighbor.mat';
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%all_nodes = anchor_nodes+unknown_nodes;
unknown_node_index = all_nodes.anchors_n+1:all_nodes.nodes_n;
row_n=ceil(all_nodes.square_L/grid_length);col_n=row_n;
centroid_x =((1:col_n)-0.5)*grid_length;
centroid_y= ((1:row_n)-0.5)*grid_length;
for i=unknown_node_index
disp([num2str(i)]);
neighboring_anchor_index=find(neighbor_matrix(i,1:all_nodes.anchors_n)==1);
neighboring_anchor_n=length(neighboring_anchor_index);
if neighboring_anchor_n==3
gridmap=zeros(row_n,col_n);
grid_covered_flag=zeros(row_n,col_n);
for a=1:neighboring_anchor_n-2
for b=a+1:neighboring_anchor_n-1
for c=b+1:neighboring_anchor_n
neighboring_node_index=setdiff(find(neighbor_matrix(i,:)==1),neighboring_anchor_index([a b c]));
perimeter(sqrt((neighboring_anchor_n(1,1)-neighboring_anchor_n(2,1)).^2+(neighboring_anchor_n(1,2)-neighboring_anchor_n(2,2)).^2), sqrt((neighboring_anchor_n(1,1)-neighboring_anchor_n(3,1)).^2+(neighboring_anchor_n(1,2)-neighboring_anchor_n(3,2)).^2), sqrt((neighboring_anchor_n(2,1)-neighboring_anchor_n(3,1)).^2+(neighboring_anchor_n(2,2)-neighboring_anchor_n(3,2)).^2)); % The error message shows "index exceeds matrix dimension" error happen in this line.
if perimeter > rss Grid_in_triangle_abc=inpolygon(centroid_x,centroid_y,all_nodes.estimated(neighboring_anchor_index([a b c]),1),all_nodes.estimated(neighboring_anchor_index([a b c]),2));%Grid covered by triangles abc
gridmap=gridmap+Grid_in_triangle_abc;
end
grid_covered_flag=grid_covered_flag|Grid_in_triangle_abc;
end
end
if any(any(grid_covered_flag))
weight_max=max(max(gridmap(grid_covered_flag)));
weight_max_index=intersect(find(gridmap==weight_max),find(grid_covered_flag==1));
[weight_max_ind_row,weight_max_ind_col]=ind2sub(size(gridmap),weight_max_index);
all_nodes.estimated(i,:)=mean([weight_max_ind_col weight_max_ind_row;weight_max_ind_col weight_max_ind_row]*grid_length-0.5*grid_length);
all_nodes.anc_flag(i)=2;
end
save '../Localization Error/result.mat' all_nodes comm_r;
end
end
end
end
Thank you very much in advance.
2 Comments
Image Analyst
on 13 May 2018
kelil, here's a tip to format your code correctly. In MATLAB type control-a control-i to properly indent your code. Then copy it and paste it here. Highlight the code and then click the {}Code button. See this link
You forgot to attach your .mat files and forgot to tell us what you passed in for grid_length so we can't run your code. You also forgot to tell us the complete error so we don't know what line of code threw an error. Please read this link first then paste all the red text here, and attach the .mat files, so we can help you.
Answers (0)
See Also
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!