How to solve Error - Index in position 1 is invalid. Array indices must be positive integers or logical values.
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Stephan
2020-11-27
编辑:Stephan
2020-11-27
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 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!