массивы и циклы в Matlab - PullRequest
       3

массивы и циклы в Matlab

0 голосов
/ 07 сентября 2018

У меня есть скрипт 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?

1 Ответ

0 голосов
/ 07 сентября 2018

Да, i и j должны быть целыми числами.

Вы можете приблизить значения i и j к целым числам, используя функцию floor (например, floor(0.1) равно 0 и floor(0.9) равно 0 тоже):

for i = floor(startlon):floor(endlon)
    for j = floor(startlat):floor(endlat)
        printf('i is %d and j is %d\n',i,j);
        disp(A.data(j,i));
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...