我正在尝试从文本文件中读取数据并在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
答案 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不为空。