I am trying to read in data from a text file and do a 3D plot of it in Matlab. Currently, all I’m getting is a blank plot so my guess is the data is not being stored correctly or at all. Also, I don’t want the 1.000000 at the end of every vector so how can I ignore that? Thanks.
Here is the file:
Blockquote
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
Here is the code:
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
The way your code is running now, your
tempvariables are blank in each iteration. Replace the textscan line withand then the CX, CY, and CZ lines with
That should make it work. Of course you will need to handle the first line separately because it has the TechEdge4: thing in it.
Also I suggest adding a check to make sure temp is non-empty before the
vertcats.