Forum Replies Created
-
AuthorPosts
-
pault
ParticipantA couple of tweaks from the octave version of the load data set program seems to work for matlab with the .opt variables included when trying the stub_filter.sch example:
function [dataset] = loadQucsDataset(filename)
pos = 0;
dataset = [];fid = fopen(filename, “rb”);
if fid < 0
error(“Cannot open data file.”)
return
endif strcmp(fscanf(fid, “%8c”, 1), “QucsData”) == 0
error(“File is not a Qucs data file.”)
fclose(fid);
return
endversion = fread(fid, 1, “int32”, 0, “ieee-le”);
size = fread(fid, 1, “int32”, 0, “ieee-le”);% load header containing a list of all variables in the file
header = fread(fid, size, “uchar”);type = 0;
count = 0;
index = 0;
% search for the variable
while index+9 <= size
type = header(index+1) + 256*(header(index+2) + 256*(header(index+3) + 256*header(index+4)));
count = header(index+5) + 256*(header(index+6) + 256*(header(index+7) + 256*header(index+8)));name = ”;
dependency = ”;
index = index + 9;
while header(index) > 0
name = strcat(name, char(header(index)));
index = index + 1;
end
if bitget(type, 2) == 1 % is dependent variable?
index = index + 1;
while header(index) > 0
dependency = strcat(dependency,char(header(index)));
index = index + 1;
end
endif bitget(type, 3) == 0 % complex-valued numbers?
data = fread(fid, 2*count, “double”, 0, “ieee-le”);
data = data(1:2:2*count-1) + j*data(2:2:2*count);
else
data = fread(fid, count, “double”, 0, “ieee-le”);
endpos = pos + 1;
dataset(pos).name = name;
dataset(pos).depName = dependency;
dataset(pos).size = count;
dataset(pos).type = type;
dataset(pos).data = data;
endfclose(fid);
endfunctionpault
ParticipantI tried this in the QucsStudio window using octave with a single line. It didn’t work unless I put the whole thing in ‘ single quotes and you need to use ” double quotes around your paths if they have spaces in the names. To get the netlist I run the schematic and then it appears in the .qucs folder, you can also go to ->Simulation ->Show last netlist and then save it to the location of your choice.
For example, this directly works for me, I pasted it from my one line octave script which also works in matlab:
dos(‘”C:\Temp\qucssim.exe” “C:\Temp\netlist.txt” “C:\Temp\datafile.dat”‘)
the data in .dat are saved in a binary format which requires the use of the octave post processing scripts provided in the octave folder, a few tweaks are needed to use them in matlab due to how it opens the binary files.
pault
ParticipantUpdate: I was able to follow the code from QUCS to implement the complex impedance transmission line via Y parameters in the frequency domain device and it seems to work and give the expected loss. Schematic attached. I guess the RLCG model in QUCS is just doing this. The loss should be wiggly vs length because there are standing waves on the line and certain regions have more I^2R/unit length than others. The normal Tline does not know about this apparently and it seems to over or under estimates the loss.
pault
ParticipantI am able to run from the command line using:
qucssim.exe netlist.txt outputname.dat
This also works from a dos() command in matlab in case you want to call the simulator to operate on the netlist.txt which you can get by copying the netlist it makes after running the schematic in the GUI and pasting it into a text file.
-
AuthorPosts