Matlab:存储文件中的数据

时间:2012-05-24 17:47:49

标签: matlab file-io

我正在尝试从文本文件中读取数据并在Matlab中对其进行3D绘图。目前,我所得到的只是一个空白的情节,所以我的猜测是数据没有正确存储或根本没有存储。另外,我不想在每个向量的末尾都有1.000000,所以我怎么能忽略它呢?感谢。

这是文件:

  

块引用

TechEdge4:<152.266724,173.189377,27.995975>  1.000000
<117.880638,156.116531,27.999983>  1.000000
<129.849899,59.195660,27.999983>  1.000000
<249.321121,60.605404,27.999983>  1.000000
<224.120361,139.072739,28.000668>  1.000000
<171.188950,143.490921,56.933430>  1.000000
<171.188950,143.490921,83.548088>  1.000000
<171.188950,143.490921,27.999985>  1.000000

以下是代码:

file = fopen('C:\Program Files (x86)\Notepad++\testFile.txt'); % open text file

tline = fgetl(file); % read line by line and remove new line characters

% declare empty arrays
CX = [];
CY = [];
CZ = [];

while ischar(tline) % true if tline is a character array

    temp = textscan(tline,'%n%n%n', 'delimiter',',');

    % convert all the cell fields to a matrix
    CX = vertcat(CX, cell2mat(temp));
    CY = vertcat(CY, cell2mat(temp));
    CZ = vertcat(CZ, cell2mat(temp));

    tline = fgetl(file);
end

fclose(file); % close the file

plot3(CX, CY, CZ) % plot the data and label the axises
xlabel('x')
ylabel('y')
zlabel('z') 
grid on
axis square

1 个答案:

答案 0 :(得分:1)

您的代码现在正在运行,每次迭代中temp变量都是空白的。用

替换文本扫描行
temp = cell2mat(textscan(tline, '<%n,%n,%n>'));

然后使用

的CX,CY和CZ行
CX = vertcat(CX, temp(1));
CY = vertcat(CY, temp(2));
CZ = vertcat(CZ, temp(3));

这应该让它发挥作用。当然,你需要单独处理第一行,因为它有TechEdge4:它的东西。

另外,我建议添加一项检查以确保在vertcat之前temp不为空。