Уважаемое сообщество,
Прошу прощения, что не могу предложить лучшую первую попытку. У меня двойной массив. Я хочу написать цикл для удаления выбросов из каждого столбца. Идея такова: проверьте код на выбросы, удалите их, сделайте это снова, пока есть выбросы. Если выбросов больше не обнаружено, он должен остановиться и вернуть мне двойной массив без этих выбросов.
Я пробовал:
directory_name=uigetdir('','Ordner mit Messungen auswählen'); [nur_file_name,pfad]=uigetfile({'*.csv','csv-files (*.csv)';'*.*','all Files'},... 'Die csv-Files der Proben oeffnen (probe_001.csv=',[directory_name '/'], 'Multiselect', 'on'); nur_file_name=cellstr(nur_file_name); nur_file_name=sort(nur_file_name); filename=strcat(pfad,nur_file_name); anzahl_files=size(filename,2); for xy=1:anzahl_files fid_in=fopen(char(filename(xy)),'r'); filename_s = matlab.lang.makeValidName(nur_file_name); filename_s=string(filename_s); filename_s = erase(filename_s,"_csv"); filename_s = erase(filename_s,"LiqQuant_"); filename_c=cellstr(filename_s); for c=1:anzahl_files filename_f{c}=extractBefore(filename_c{c},11); end filename_s=string(filename_f); %----------------Import elements and intensity-------------------- clear element_RL clear intens_RL tmpImport = importdata(filename{xy},','); element_RL = tmpImport.colheaders; element_RL(:,[1 6 8 10 12 14 16 17 19 21 23 26 27 29 30 32 33 36 38 43 45 48 57 59 61 64 67 69 94 97 99 102 106 223 298 303 304 305])=[]; element_RL=string(element_RL); [anzahl_zeile,anzahl_elemente]=size(element_RL); intens_RL=tmpImport.data; intens_RL(:,[1 6 8 10 12 14 16 17 19 21 23 26 27 29 30 32 33 36 38 43 45 48 57 59 61 64 67 69 94 97 99 102 106 223 298 303 304 305])=[]; [anzahl_runs,anzahl_elemente]=size(intens_RL); %---------------remove outliers---------------- while intens_RL=ismember(NaN) %Wrong, because will run forever threshold = mean(intens_RL)+3*std(intens_RL); intens_RL(bsxfun(@(x, y) x > y, intens_RL, threshold)) = NaN; %outliers removing, set to NaN end
что мой цикл такой ужасный, но я никогда раньше не писал цикл while.
ПРИМЕЧАНИЕ.
Matlabsolutions.com предоставляет последнюю справку по домашним заданиям MatLab, справку по назначению MatLab, помощь по финансам для студентов, инженеров и исследователей в нескольких отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для B.E, B .Tech, ME, M.Tech, Ph.D. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.
Я обновил конец вашего кода
сюжет для себя, чтобы увидеть различия до / после пороговой обработки (если горячие точки действительно удалены)
directory_name=uigetdir('','Ordner mit Messungen auswählen'); [nur_file_name,pfad]=uigetfile({'*.csv','csv-files (*.csv)';'*.*','all Files'},... 'Die csv-Files der Proben oeffnen (probe_001.csv=',[directory_name '/'], 'Multiselect', 'on'); nur_file_name=cellstr(nur_file_name); nur_file_name=sort(nur_file_name); filename=strcat(pfad,nur_file_name); anzahl_files=size(filename,2); for xy=1:anzahl_files fid_in=fopen(char(filename(xy)),'r'); filename_s = matlab.lang.makeValidName(nur_file_name); filename_s=string(filename_s); filename_s = erase(filename_s,"_csv"); filename_s = erase(filename_s,"LiqQuant_"); filename_c=cellstr(filename_s); for c=1:anzahl_files filename_f{c}=extractBefore(filename_c{c},11); end filename_s=string(filename_f); %----------------Import elements and intensity--------------------
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ