How to solve Error - Index in position 1 is invalid. Array indices must be positive integers or logical values.
1 view (last 30 days)
Show older comments
Hi, i wonder what is the problem with the script as the error showed like this "Index in position 1 is invalid. Array indices must be positive integers or logical values."
This is the script that I run:
clc;clear all;close all;
A1 = load('Mtxj_FULL_ASCENDING.txt');
A2 = load('Mtxj_FULL_DESCENDING.txt');
B1 = load('N2j1c_FULL_ASCENDING.txt');
B2 = load('N2j1c_FULL_DESCENDING.txt');
offset = 0;
A = [A1;A2];
B = [B1;B2];
B = [B(:,1:8) B(:,9)+offset B(:,10:end)];
lat1 = A(:,1); lat2 = B(:,2);
lon1 = A(:,2); lon2 = B(:,3);
mss1 = A(:,4); mss2 = B(:,9);
scatter(lon1,lat1,'.r');hold on;
scatter(lon2,lat2,'.b');hold on;
F = scatteredInterpolant(B(:,2), B(:,3), (1:size(B,1)).', 'nearest');
A_is_nearest_idx = F( A(:,1:2) );
B_closest_to_A = B(A_is_nearest_idx,:);
0 Comments
Accepted Answer
Stephan
on 27 Nov 2020
Edited: Stephan
on 27 Nov 2020
A1 = load('Mtxj_FULL_ASCENDING.txt');
A2 = load('Mtxj_FULL_DESCENDING.txt');
B1 = load('N2j1c_FULL_ASCENDING.txt');
B2 = load('N2j1c_FULL_DESCENDING.txt');
offset = 0;
A = [A1;A2];
B = [B1;B2];
B = [B(:,1:8) B(:,9)+offset B(:,10:end)];
lat1 = A(:,1); lat2 = B(:,2);
lon1 = A(:,2); lon2 = B(:,3);
mss1 = A(:,4); mss2 = B(:,9);
scatter(lon1,lat1,'.r');hold on;
scatter(lon2,lat2,'.b');hold on;
F = scatteredInterpolant(B(:,2), B(:,3), (1:size(B,1)).', 'nearest');
A_is_nearest_idx = F( A(:,1:2) );
% Your data is corrupt at least at pos. 2240 and 3121 - convert to integer
% data type, to fix the error
A_is_nearest_idx = uint16(A_is_nearest_idx);
B_closest_to_A = B(A_is_nearest_idx,:);
2 Comments
More Answers (0)
See Also
Categories
Find more on Data Type Conversion 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!