как найти n ближайших кортежей к определенной ячейке в Matlab - PullRequest
0 голосов
/ 15 сентября 2018
a=size(t,1)
b=size(t,2)
 for j=1:b
    for i=1:a
        if t(i,j)=='yes'
            t(i,j)=mode(t(:,j))
        elseif t(i,j)=='no'
            t(i,j)=mode(t(:,j))  
        elseif t(i,j)==0
            t(i,j)=mean(t((i+1):(i+k),j))
            end
          end
        end
    end
 end

Как мы можем вычислить среднее значение четырех соседних соседей числа (два числа, выбранные из непосредственного левого и непосредственного правого числа) вместо того, чтобы находить среднее из четырех элементов, которые являются непосредственными правыми от числа в MATLAB.

1 Ответ

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

Я предполагаю, что вы ссылаетесь на следующую часть кода, который вы разместили:

t(i,j)=mean(t((i+1):(i+k),j))

То, что делает эта строка, это брать среднее значение t(i+1, j), t(i+2, j) , ..., t(i+k,j).

Если вы хотите вместо этого взять среднее из верхней и нижней строк, вы можете сделать что-то вроде этого (предполагая, что k - это четное число, подобное четырем):

t(i,j)=mean([t((i-k/2):(i-1),j), t((i+1):(i+k/2),j)])

вместо этого. Однако это приведет к перезаписи записей t, которые позже будут использоваться при получении среднего значения других значений, поэтому сначала вам нужно будет сделать копию t:

 t_copy = t
 a=size(t,1)
 b=size(t,2)
 for j=1:b
    for i=1:a
        ...
        t(i,j)=mean([t_copy((i-k/2):(i-1),j), t_copy((i+1):(i+k/2),j)])
    end
 end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...