MATLAB: создание графика гистограммы из CSV-файлов для чтения и помещения в ячейки? - PullRequest
0 голосов
/ 09 ноября 2018

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

У меня есть несколько файлов данных CSV в папке, и я хотел бы сделать гистограмму для всех их одновременно, чтобы сравнить их. Я не уверен, как это сделать. Некоторые копания в интернете дали скрипт:

d=dir('*.csv'); % return the list of csv files for i=1:length(d) m{i}=csvread(d(i).name); % put into cell array end

Проблема в том, что я не могу сейчас просто написать histogram(m(i)) команду, потому что m (i) - это тип ячейки, а не тип файла csv (я не уверен, что правильно использую эту терминологию, но MATLAB определенно не принимая первое).

Я не совсем уверен, как поступить. На самом деле, я не уверен, какова природа элементов m (i) и что я могу / не могу с ними сделать. Команде гистограммы требуется матричный ввод, поэтому, вероятно, мне понадобится «вектор матриц» и команда, которая отображает каждый из векторных элементов (то есть матриц) на отдельном графике. У меня было бы всего около 14, что довольно много, и загрузка могла бы занять много времени, но я не уверен, как действовать более эффективно.

Обобщая вопрос:

Позже я напишу сценарий, чтобы уменьшить шум, сгладить данные в файле csv и преобразовать их в двоичную форму (файлы csv предназначены для зашумленных изображений с размытыми формами, и я хочу различить эти формы, установив вырез Выключите для интенсивности / значения пикселей в матрице CSV, например, чтобы создать двоичное изображение, показывающее эти формы). В идеале я хотел бы применить это ко всем изображениям в моей папке сразу, чтобы я мог выбрать, какие изображения лучше всего подходят для анализа. Итак, мой вопрос, как я могу запустить скрипт со всеми файлами CSV в моей папке, чтобы я мог сравнить их все сразу? Я предполагаю, что любая техника, которую я использую для графиков гистограммы, может быть применима и к этому, но я не уверен.

Вероятно, лучше написать скрипт, который: - создает гистограмму и / или запускает бинаризационный скрипт для каждого CSV-файла в папке -и помещает все изображения в новую назначенную папку, чтобы я мог просмотреть их.

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

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Функция csvread(filename) всегда возвращайте матрицу M, которая является числовой матрицей и никогда не будет возвращать ячейку. Если у вас есть текстовые данные в файле .csv, это приведет к ошибке из-за отсутствия только числовых данных. Единственная причина, по которой я могу использовать массив ячеек при чтении файлов, заключается в том, что размеры отдельных матриц, считываемых из каждого файла, различны, например, первый файл .csv содержит данные, организованные как 3xA, а второй файл .csv содержит данные, организованные как 2xB, так что вы можете поместить их все в одну структуру.

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

Если M - это матрица ячеек, есть два варианта извлечения данных: M(i) и M{i}. M(i) даст вам элемент ячейки и не может использоваться для histogram, однако M{i} возвращает элемент в его первоначальной форме, которая является числовой матрицей.

TL; DR использовать histogram(M{i}) вместо histogram(M(i)).

0 голосов
/ 09 ноября 2018

Функция csvread возвращает исходную матрицу. Я не уверен, но возможно, что если некоторые элементы в файле csv не являются числами, Matlab автоматически делает массив ячеек из вывода. Поскольку я не знаю структуру ваших csv-файлов, я рекомендую вам попробовать некоторые похожие функции (readtable, xlsread):

M = readtable(d(i).name) % Reads table like data, most recommended

M = xlsread(d(i).name) % Excel like structures, but works also on similar data

Попробуйте их и дайте мне знать, сработало ли это. Если нет, пожалуйста, загрузите образец файла.

...