найти расположение строки в матрице - PullRequest
0 голосов
/ 03 июля 2018

Я хочу найти местоположение 'N' в матрице. После этого я хочу заменить это 'N' медианой этого вектора в матрице. Я уже использовал эти коды для этого, но я получаю несколько ошибок.

%% put test data in matrix


k=1;
m=1;
n=3;
for j=1:99
    percentage2 = j/99
    mDataTest(m,1) = str2double(data{1}{j});
    mDataTest(m,2) = 0;

    for i = 3:50
        percentage1 = j/50       
        if(strcmp(data{i}{j},''))
            mDataTest(m,i) = 'N'; %give each "" the median value

        elseif(strcmp(data{i}{j},'NULL'))
            mDataTest(m,i) = 'N'; %give each "NULL" the median value

        else
            mDataTest(m,i) = str2double(data{i}{j}); %make matrix with data               
        end
    end
        m=m+1;
        n=3;
end

Index = find(contains(mDataTest,'N'));

for i = 1 :50
    vMedian=median(vDataTest(:,i));
end

mDataTest(Index)= vMedian(Index(2));

Здесь я использую функцию «содержит», но получаю ошибки. Кто-нибудь может мне помочь?

Спасибо!

1 Ответ

0 голосов
/ 03 июля 2018

Ваш код кажется мне немного странным. Позвольте мне попытаться понять, что вы хотите сделать.

Итак, вы начинаете с переменной 2D-ячейки с текстом и хотите преобразовать ее в числовую матрицу. Если ячейки пусты или содержат значение NULL, вы хотите, чтобы они имели медианное значение строки, в которой они находятся.

Я бы начал с преобразования и сделал пустыми и пустыми ячейками NaN. (Не число) Затем найдите все nans и используйте median с флагом omitnan для замены nans.

for j=1:99
    for i = 1:50
        if(strcmp(data{i}{j},'')||strcmp(data{i}{j},'NULL'))
            mDataTest(j,i) = nan; %replace with nan
        else
            mDataTest(j,i) = str2double(data{i}{j}); %convert to number
        end
    end
end

for j=1:99
    for i = 1:50
        if isnan(mDataTest(j,i))
            mDataTest(j,i) = median(mDataTest(j,:),'omitnan')
        end
    end
end
...