-1

我正在尝试从文本文件中读取数据并在 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
4

1 回答 1

1

您的代码现在运行的方式,您的temp变量在每次迭代中都是空白的。将 textscan 行替换为

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: 东西。

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

于 2012-05-24T18:19:05.110 回答