EDIT3 (ПРИНЯТОЙ ОТВЕТ): Используя кнопку импорта данных в разделе переменных на домашней панели инструментов, вы можете настроить способ импорта данных. как только это будет сделано, вы можете щелкнуть выбор импорта под стрелкой и создать сценарий или функцию, которая будет следовать тем же правилам, которые указаны в окне данных импорта.
----------------------------------------- --------- сохранен для справки ------------------------------------ --------------
Вы можете использовать dlmread он работает в следующем формате
M = dlmread(filename,';')
имя файла представляет собой строку полный путь в файл, если файл находится в текущий рабочий каталог, в этом случае вы можете просто ввести имя файла.
EDIT1: вместо textscan, следующий код должен сделать трюк или, по крайней мере, большую часть его.
%rt is permission r for read t for open in text mode
csv_file = fopen('D:\Dev\MATLAB\stackoverflow_tests\1.csv','rt');
%the formatspec represents what the scan is 'looking'for.
formatSpec = '%s%s';
%textscan inputs work in pairs so your scanning the file using the format
%defined above and with a semicolon delimeter
C = textscan(csv_file, formatSpec, 'Delimiter', ';');
fclose(csv_file);
Результат показан.
C{1}{1} =
1,000333e+003
C{1}{2} =
1,001297e+003
C{1}{3} =
1,002261e+003
C{2}{1} =
6,620171e+001
C{2}{2} =
6,519699e+001
C{2}{3} =
6,444984e+001
EDIT2: заменить запятую с точкой и преобразовать в целое число типа двойной:
[row, col] = size(C);
for kk = 1 : col
A = C{1,kk};
converted_data{1,kk} = str2double(strrep(A, ',', '.'));
end
celldisp(converted_data)
результат:
converted_data{1} =
1.0e+03 *
1.0003
1.0013
1.0023
converted_data{2} =
66.2017
65.1970
64.4498
Если «импорт данных ", попробуйте' importdata' как функцию. Я также думаю, что это может зависеть от вашего языка. например если вы выполняете 'str2num ('1,000333e + 003')' в командной строке, правильно ли он преобразуется ?. – nkjt