Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Matlab代码-从.CSV中提取字符串形式的数值数据时,保持前导零_String_Matlab_Csv_Import_Xlsread - Fatal编程技术网

String Matlab代码-从.CSV中提取字符串形式的数值数据时,保持前导零

String Matlab代码-从.CSV中提取字符串形式的数值数据时,保持前导零,string,matlab,csv,import,xlsread,String,Matlab,Csv,Import,Xlsread,我有CSV格式的数据。数据包含文本格式的数值,但没有任何撇号 我尝试使用xlsread导出数据,但是Matlab会自动删除前导零。是否可以强制Matlab将其读取为字符串以保持前导零?xlsread有三个输出,第三个输出用于保存原始数据。使用第三个输出,您将在那里找到文本。然后可以使用str2num将文本转换为数字数据 如果是CSV文件,不要使用xlsread。这是用于Excel(.xls/.xlsx)文件的。如果基本数据实际上主要在Excel文件中,则不要将其保存到CSV;直接读取Excel

我有CSV格式的数据。数据包含文本格式的数值,但没有任何撇号


我尝试使用xlsread导出数据,但是Matlab会自动删除前导零。是否可以强制Matlab将其读取为字符串以保持前导零?

xlsread有三个输出,第三个输出用于保存原始数据。使用第三个输出,您将在那里找到文本。然后可以使用str2num将文本转换为数字数据

如果是CSV文件,不要使用
xlsread
。这是用于Excel(
.xls
/
.xlsx
)文件的。如果基本数据实际上主要在Excel文件中,则不要将其保存到CSV;直接读取Excel文件

您必须使用较低级别的读取例程,如
textscan
fscanf
,才能在中读取此内容。问题是CSV文件实际上并没有以不同的方式表示字符串和数字:CSV文件只包含文本数据,所以像Matlab这样工作方式类似数字的程序必须提供一些“魔法”来决定什么是数字,并将这些字符串转换成数字。他们认为你不关心像前导零这样的东西,所以他们把它抽象掉了。但在这种情况下,你确实关心,所以你必须绕过他们的魔法

别担心
textscan
fscanf
易于使用

这样做:

fid = fopen('myfile.csv');
col_vals = textscan(fid, '%s');
orig_policy_num = col_vals{1};
fclose(fid);

术语说明:您说“数据包含数值”,但数值表示数字,前导零对数字不重要;这只是不同风格的问题,相同的值可以用不同的风格书写。但是你关心前导零。这意味着这实际上是文本数据,而不是数字数据。您可能需要使用类似于
textscan
的工具,以便更精确地控制格式。您可以将一些实际的CSV示例数据作为文本共享吗?您发布的屏幕截图看起来像Excel屏幕截图,Excel会进行奇怪的格式化操作,使原始基础输入格式变得模糊。我尝试过这种方法,但第三个/原始数据也会将其检测为数字并自动删除前导零。