Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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 以数字形式读取文本文件(表)_String_Matlab_Numeric_Matlab Guide - Fatal编程技术网

String 以数字形式读取文本文件(表)

String 以数字形式读取文本文件(表),string,matlab,numeric,matlab-guide,String,Matlab,Numeric,Matlab Guide,我正在使用MatlabGUI 因此,我希望用户从他们的计算机浏览他们自己的表。当他们浏览后,完整路径将写入静态文本中,并显示(他们浏览的)表格 问题是,文件;它读取字符串,而不是数字 那么,如何将文本文件数据读取为数字而不是字符串呢?我必须编写什么脚本?一种快速的方法是使用textscan功能: dataRead = textscan(fid, format); 但是,您必须指定用于读取文件的格式。如果您正在读取整数,请使用'%d',如果您正在读取浮点,请使用'%f'(请参阅此处有关格式及其用

我正在使用MatlabGUI

因此,我希望用户从他们的计算机浏览他们自己的表。当他们浏览后,完整路径将写入静态文本中,并显示(他们浏览的)表格

问题是,文件;它读取字符串,而不是数字


那么,如何将文本文件数据读取为数字而不是字符串呢?我必须编写什么脚本?

一种快速的方法是使用
textscan
功能:

dataRead = textscan(fid, format);
但是,您必须指定用于读取文件的格式。如果您正在读取整数,请使用
'%d'
,如果您正在读取浮点,请使用
'%f'
(请参阅此处有关格式及其用法的详细信息:)。 因此,如果文本文件有100个由空格分隔的整数值,则必须使用:

fid = fopen('file.txt', 'r');
dataRead = textscan(fid, '%d');
fclose(fid);

然后,dataRead将是一个1x1单元,其中包含一个100x1矩阵,并读取值。

一个快速方法是使用
textscan
功能:

dataRead = textscan(fid, format);
但是,您必须指定用于读取文件的格式。如果您正在读取整数,请使用
'%d'
,如果您正在读取浮点,请使用
'%f'
(请参阅此处有关格式及其用法的详细信息:)。 因此,如果文本文件有100个由空格分隔的整数值,则必须使用:

fid = fopen('file.txt', 'r');
dataRead = textscan(fid, '%d');
fclose(fid);

然后,dataRead将是一个1x1单元格,其中包含一个100x1矩阵,其值为读取值。

如果您有一个txt文件,则可以使用命令textscan(…)将该文件txt导入单元格:

cell=textscan(fopen('file.txt'),'options')

“cell”是单元格,“file.txt”是txt文件名“选项”是一个字符串,用于定义导入格式(“%s”导入字符串、“%f”导入浮动…)和分隔符类型。以这种方式导入的所有数据都存储在单元格中,要加入单元格的第n个元素,必须使用括号{}(例如,单元格{1}加入第一个元素)

如果“file.txt”包含以下值:

1.2.3

3.4.5

使用以下代码

cell = textscan(fopen('file.txt'), '%f');
var = cell{1};
变量“var”中存储了数字,但它是一个列向量,而不是矩阵/表,必须重新排序:var=[1.2;2.3;3.4;4.5]

使用以下代码(稍微复杂一点,但不需要关于表维度的先验知识来重新排序数据):

“var”是一个单元格数组,每个元素都包含一行字符串格式的文档(多亏了分隔符)(var{1}='1.2.3',var{2}='3.4.5')。如果N是“var”的长度,则for循环从1到N,您可以加入各种字符串,将其转换并以以下方式存储在矩阵中:

M = length(strread(var{1}, '%f')); %column number
N = length(var); %row number
a = zeros(N,M); %inizialization
for n = 1:N
a(n,:) = strread(var{n}, '%f');
end*

现在“a”是一个数字为a=[1.2,2.3;3.4,4.5]的矩阵,用于分析和绘图。

如果您有一个txt文件,可以使用命令textscan(…)在单元格中导入txt文件:

cell=textscan(fopen('file.txt'),'options')

“cell”是单元格,“file.txt”是txt文件名“选项”是一个字符串,用于定义导入格式(“%s”导入字符串、“%f”导入浮动…)和分隔符类型。以这种方式导入的所有数据都存储在单元格中,要加入单元格的第n个元素,必须使用括号{}(例如,单元格{1}加入第一个元素)

如果“file.txt”包含以下值:

1.2.3

3.4.5

使用以下代码

cell = textscan(fopen('file.txt'), '%f');
var = cell{1};
变量“var”中存储了数字,但它是一个列向量,而不是矩阵/表,必须重新排序:var=[1.2;2.3;3.4;4.5]

使用以下代码(稍微复杂一点,但不需要关于表维度的先验知识来重新排序数据):

“var”是一个单元格数组,每个元素都包含一行字符串格式的文档(多亏了分隔符)(var{1}='1.2.3',var{2}='3.4.5')。如果N是“var”的长度,则for循环从1到N,您可以加入各种字符串,将其转换并以以下方式存储在矩阵中:

M = length(strread(var{1}, '%f')); %column number
N = length(var); %row number
a = zeros(N,M); %inizialization
for n = 1:N
a(n,:) = strread(var{n}, '%f');
end*

现在“a”是一个带有数字的矩阵:a=[1.2,2.3;3.4,4.5],用于分析和绘图。

文件格式是什么?您是否签出了
dlmread
csvread
?它是*.txt,您知道吗?您是否阅读了textscan中关于格式的说明?文件格式是什么?您是否签出了
dlmread
csvread
?它是*.txt,您知道吗?您是否阅读了textscan中关于格式的描述?非常感谢您的回答!非常感谢你的回答!不要忘记使用
fclose
关闭文件。不要忘记使用
fclose
关闭文件。