EDIT3(接受的答案):在家里的工具栏,可以自定义数据的导入方式的可变部分使用进口数据按钮。一旦完成,您可以单击箭头下方的导入选择并生成一个脚本或函数,该脚本或函数将遵循导入数据窗口中定义的相同规则。
----------------------------------------- --------- 留作参考 ------------------------------------ --------------
您可以使用dlmread它工作在以下格式
M = dlmread(filename,';')
的文件名是与该文件的,除非完整路径字符串该文件在当前工作目录,在这种情况下,您只需输入文件名即可。
编辑1:改为使用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:以点代替逗号,并转换为double类型的整数:
[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