У меня есть скрипт Matlab, в котором я пытаюсь прочитать данные из массива в файле globalbathy.dat. Теперь я хочу сделать скрипт, который будет читать часть массива на основе пользовательского ввода. Следовательно, в зависимости от пользовательского ввода, сценарий должен иметь возможность получать значения из массива A [j, i], где компоненты i составляют от 260 до 300, а j - от 50 до 0. Ниже приведен пример сценария:
function [lat_sub,lon_sub,depth_sub] = compute_data(coord,dx,dy)
lats = coord(1);
lons = coord(2);
late = coord(3);
lone = coord(4);
latss = lats;
lonss = lons;
lates = late;
lones = lone;
lat_sub = [latss:dy:lates];
lon_sub = [lonss:dx:lones];
Nx = length(lon_sub);
Ny = length(lat_sub);
Nb=Ny*Nx;
filename = 'globalbathy.dat';
delimiterIn = ' ';
headerlinesIn = 1;
A = importdata(filename,delimiterIn,headerlinesIn);
startlon = uint64(((80 - latss)*360) + lonss);
startlat = uint64((80 - latss));
endlon = uint64(startlon+Nx);
endlat = uint64(startlat+Ny);
for i = startlon:endlon
for j = startlat:endlat
printf('i is %d and j is %d\n',i,j);
disp(A.data(j,i));
end;
end;
return;
Однако при запуске скрипта я получаю следующую ошибку:
error: A(0,_): subscripts must be either integers 1 to (2^31)-1 or logicals
error: called from
compute_data at line 51 column 3
У меня сложилось впечатление, что i и j - целые числа. Как вы решаете эту ситуацию, чтобы я мог получить значения, которые я хочу для массива A?