Matlab takes in wrong data in command window
    4 views (last 30 days)
  
       Show older comments
    
[fname, pname] = uigetfile('*.csv'); %ask for file
filename= fullfile(pname, fname); %file as string
assert(exist(filename, 'file')==2,'%s does not exist.', filename); %check if file exist
data = csvread(filename, 1) % reads data from file skipping headers
***************************Excel Data***************
(just need to shift values to according heading, they are in order)(there are like 55,000 rows but these are the first couple)
Latitude  Longitude  Elevation (metres)  Distance (KMs)  Gradient
30.6183  -96.33631  103.7  0  0
30.61832  -96.33629  103.6  0.003   0
30.61845  -96.3361  102.8  0.026   0
30.61845  -96.33608  102.7  0.028   0
**************************Data from Matlab************************
0.0363   -0.1203    0.1592    2.7105         0
      0.0363   -0.1203    0.1595    2.7105         0
      0.0363   -0.1203    0.1595    2.7106         0
      0.0363   -0.1203    0.1578    2.7106   -0.0010
      0.0363   -0.1203    0.1571    2.7107   -0.0020
5 Comments
  Image Analyst
      
      
 on 12 Jun 2017
				
      Edited: Image Analyst
      
      
 on 12 Jun 2017
  
			He meant to attach your CSV file, NOT a screenshot. Please attach a CSV file that demonstrates the problem so we can replicate it.
What's showing in the Excel screenshot is not the kind of CSV file that MATLAB likes. It should be just numbers, not numbers and text with some rows of numbers having different numbers of columns than other rows.
Accepted Answer
  Image Analyst
      
      
 on 13 Jun 2017
        The data from MATLAB is the same, it's just that when you echo it to the command window, the data is multiplied by 1e-3. If you use fprintf() instead of just letting it automatically echo to the screen, you'll see they are the same (I tried it).
11 Comments
  Image Analyst
      
      
 on 13 Jun 2017
				You can see in dpb's post that both csvread() and textread() have the same numbers, they're just formatted differently in the display. csvread has the 1.0e+03 in there whereas text read doesn't. But internally, in your code, using the arrays from either function will give you the same result. If you echo to the command line, the 1.0e+03 just scrolled off the top of the command window, like Walter and I said, but it's still the same numbers. So I'd use csvread() (if you have a recent version where you can tell it to skip a header line) since textread() is deprecated.
More Answers (0)
See Also
Categories
				Find more on Text Data Preparation in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


