Проблемы с преобразованием плавающей десятичной дроби в целое число - PullRequest
0 голосов
/ 06 июня 2018

Я создал пользовательскую функцию, в которой входными данными являются j = индексы, new_loc = матрица ячеек 51x2 и размер моего первого столбца матрицы 51x2 = 51.

function [x,y,w,z] = check_location(j,new_loc,size)

disp(j);
a = j / size + 1; %Finds 1st element of compared array
b = mod(j,size); %Finds 1st element of comparing array

int8(a) %Must be whole integer
int8(b) %" "

fprintf('a = %g',a)

if b == 0 %1st element cannot be 0
    b = b + 1;
else
    ;
end

fprintf('b = %g',b)

x = new_loc(a,1); % [x y]
y = new_loc(a,2);
w = new_loc(b,1); % [w z]
z = new_loc(b,2);

Я в замешательстве, так как проверил вывод с помощью функции fprintf, и fprintf ('a =% g', a) показывает десятичное число, а a = j / size + 1 оценивает целое число.Кроме того, я получаю сообщение об ошибке: индексы нижнего индекса должны быть либо действительными положительными целыми числами, либо логическими.

for j = 1:numel(D)
    if D(j) < 8 & D(j) ~= 0
         [x1,y1,x2,y2] = check_location(j,new_location,numel(new_location(:,1)));
%         smallest_int = check_intensity(x1,y1,x2,y2,B); 
%         [row,col] = find(B == smallest_int) %Convert smallest_int vals w/ it's location
%         new_location(row,col) = []; %Check new_location w/ smallest_int vals and delete
    end
end

Вот цикл for, в котором я проверяю свою функцию.

1 Ответ

0 голосов
/ 06 июня 2018

Эти строки:

int8(a) %Must be whole integer
int8(b) %" "

оба возвращают int8 значения, но они нигде не сохраняются, поэтому они теряются.Вам необходимо присвоить целочисленное значение исходной переменной.

a = int8(a) %Must be whole integer
b = int8(b) %" "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...