LTSPICE2MATLAB imports an LTspice IV .RAW waveform file containing data from a Transient Analysis (.tran) or AC Analysis (.ac) simulation, and converts voltages and currents vs. time (or frequency) into a Matlab data structure. This function can read compressed binary, uncompressed binary, and ASCII file formats. In the case of compressed binary, the data is automatically uncompressed using fast quadratic point insertion. This function handles very large binary simulation files efficiently, and has an option to load only a subset of a file's waveforms to reduce memory consumption. Type >> help LTspice2Matlab for details.
Use LTSPICE2MATLAB to import LTspice waveforms for additional analysis in Matlab, or for comparison with measured data. LTspice2Matlab has been tested with LTspice IV version 4.01p, and Matlab versions 6.1 and 7.5., and regression testing has been used to expose the function to a wide range of LTspice settings.
Note: LTspice IV is a Spice III simulator and schematic capture tool freely avaliable for download at www.linear.com/designtools/software. It is optimized for simulation of switching regulators, but can simulate many other types of circuits as well and comes with a variety of component models.
This is great, however, to recover the netlist names you need to load the whole file into memory which can be prohibitive with large files. I would suggest that a function option that only drops the netlist names into a structure would be essential to this library. Why? because if you ever make a change to the file then the order changes and you have to re load the file, check the names and then generate a vector that can select only the netlists that are wanted.
Another option would be to be able to select only the data that you want by name like this:
netlistdata= LTspice2Matlab('thisistherawfile.raw',['V(U1:3)' 'I(U3:2)' 'I(R2)']);
@Michale; Works great for me with your changes! Thanks for the fix!
@Michael; it doesnt Work for me: i still get an Error:
"Error using LTspice2Matlab (line 186)
Format error in LTspice file <filepath>"
Regarding the error with LTSpice XVII, as Joshua Jones pointed out, the error is due to the new version of LTspice using UTF16 encoding for .RAW files.
The simple fix for this is to update lines 153 and 156 of the code to the following:
153 - fid = fopen(filename, 'rb', 'n', 'UTF16LE');
156 - fid = fopen(sprintf( '%s.raw', filename ), 'rb', 'n', 'UTF16LE');
Matlab will give a warning because it doesn't recognize the encoding scheme, but everything imports as before.
Hope this helps.
Fails to work for LTspice XVII.
It fails to work for LTspice XVII. I hope the next version will fix this problem.
This file would have been a life saver for me, however, using R2016b and LTspice XVII, this M-file did not work. After some messing around, I found out that the use of fgetl() was causing problems, because the .RAW file is encoded in UTF-16. Encoding the .RAW file fixed this, but the rest of the importing of the data failed. I think this code could probably do with some revision and updating.
Matlab would not run this with Dropbox running. Needed to restart computer and turn off Dropbox. Once it is running in 2015a, the data does not make sense. It tells me there are 43991 rows of data when there are 19712 when I export the data manually. The time vector is a row of what appears to be a value from each column of variable. Definitively not the time vector. The raw data variable matrix appears to be jumbled. Does anyone know how to fix this?
The LTSpiceIV version I used is 4.23I and Matlab is 2015a. One need is to study the Vx struct to find out where the variables are and then pull the data separately.
Vx = LTspice2Matlab( filename );
Vx_name = Vx.variable_name_list;
freq = Vx.freq_vect;
Vsig(k) = Vx.variable_mat(N,k);
This function is awesome! It really helped me a lot.
First I was a little overstrained my the amount of the imported Data, but since I'm using labels in LTspice everything is fine.
forgive my english, this is not my first langage. i am using this program but I still have the error message
Error using LTspice2Matlab (line 158)
Could not open file "DSPM.raw"
Error in DSPM_MCL (line 25)
Error in Main (line 3)
what can I do to solve this problem
I am trying to run the LTSpice2Matlab code provided here but I am getting this error
Error using LTspice2Matlab (line 130)
LTspice2Matlab takes 1, 2, or 3 input parameters. Type "help LTspice2Matlab" for details
Please can someone advice me on how to solve this problem?
Hi Paul this is very usefull. Thanks! I often work with parameter stepping. I observed that LTspice2matlab does not cover this feature. It outputs all steps sequencially without notifying that it is stepped data and providing info about about runs. This would a be nice feature for the next version.
This is fantastic! I struggled with Helmut's ltsputil.exe program for a while, intending to bring the final results into Matlab and this program does all that in 1 step.
This failed for me
Error using LTspice2Matlab (line 212)
Format error in LTspice file "/Users/acurtis/Desktop/test.raw" ... Wrong number of
columns in the variable define section
I created the raw file from an example circuit netlist I got from
I chose the "RC filter AC response" and copied the netlist to a file. I ran ngspice with the command
ngspice --batch --rawfile="test.raw" "rc.net"
and then in MATLAB
Very useful function. However, i detect some "NaN" (not a number) conversions in MATLAB which are not a problem to plot data but it is for making calculations. Does anybody know how to deal with them without increasing the computation time.
Thanks very much for this function, I managed to get it to work with Octave (3.2.0 on Win7). Are you interested in the modifications?
Hello, anybody can upload or post the commands in matlab to plot the "RAW DATA" structure into a Figure, thank you in advance.
this file is very useful as the analysis function in LTspice is limited in some extend.
Update, my previous comment was caused by an error I made when using LTspice2Matlab.m Once I enclosed the path and file name in single quotes the LTspice2Matlab.m file program ran successfully. I had forgotten strings have to be enclosed in single quotes in Matlab.
I have tried using LTspice2Matlab.m with the 1010.asc and pll2.asc examples that come with LTspice and both produce an "unexpected Matlab operator error. This is with version 4.01p of Ltspice and versions 7.5 and 7.7 of Matlab. I also noticed Matlab's Current Directory function doesn't work with LTspice2Matlab.m
I assume others have had better results but so far I have been unable to load a raw LTspice file.
Thanks alot for this file. It works as expected, much better than my own import function, which requires to set LTspice to ASCII output. But ASCII is not the preferred output, one usually wants to use LTspice with its .RAW format.
The source of this function uses long, descriptive varnames and has a very good help section at the beginning.
Btw, I tested with Matlab 7.5 (R2007b) and LTspice III (2.16z), and everything worked well.
It may sound pedantic, but there are only few comments after the help section and mlint gives quite some warnings on this file.
It would be nice to see this very useful program extented to other simulation types than .TRAN.
Updated help section at beginning of file
Added support for AC Analysis (.ac) simulations
Added support for AC Analysis (.ac) simulation files.