Octave
From Steak Wiki
Jump to navigationJump to searchTips on GNU Octave
argv
# NOTE: numbers passed into argv are treated as (ascii) char
# must convert with str2num, or some other
e.g. (call script with ./script 20
#!/usr/bin/octave
arg_list = argv();
HOWLONG=arg_list{1}
# NOTE: numbers passed into argv are treated as (ascii) char
# which means 0 is around 40 in binary.
# must convert with str2num, or some other
# cast() will not fix this (as it casts the binary)
display("How long is: ")
class(HOWLONG)
news2 = str2num(HOWLONG)
display("news2 is now: ")
class(news2)
If Loop
#don't forget quotes on numbers here
#if HOWLONG == "1"
# SQLQUERYNUM = 288;
#elseif HOWLONG == "3"
# SQLQUERYNUM = 288 * 3;
#elseif HOWLONG == "7"
# SQLQUERYNUM = 288 * 7;
#elseif HOWLONG == "14"
# SQLQUERYNUM = 288 * 14;
#else
#display("incorrect time to search")
#display("Try, 1, 3, 7, 14")
#exit();
#en
sprintf
- basic sprintf (req's quotes)
- val1="test"
- val2="something"
- sprintf("%s%s",val1,val2)
- if you want to assign to variable, sprintf(variable,"%s%s",val1,val2)
- won't work, but ofc
- newvar = sprintf("%s%s",val1,val2)
- will
call function with parenthesis or not
- dynamically generate print filename at runtime
- https://www.mathworks.com/matlabcentral/answers/148-how-do-i-dynamically-generate-a-file-name-for-save-in-matlab
- essentially, if you myvar = sprintf(something...)
- you have to print(myvar)
- not print myvar
- so parenthesis are required (but they are not always required for e.g. print)
invert Y axis
- display(p(:,2)) (all times)
- display(p(:,1)) (all values)
- vals = p(:,1)
- EDIT: the below was a bug.
- it appears you can't invert the (p(:,1)) in plot, with either common commands used to invert Y axis.
- these cmds are: axis(ij) after plot, as well as set(gca,'YDir','reverse');, and plot (flipud(p(:, 2)), p(:, 1)) (this latter one inverts only the X axis, not Y
- so instead, send it to a new variable
- flipud(vals)
- EDIT: this isn't what I want to do. it flips the array upside down. instead, I want the high end
- of the y axis to be at the bottom, and the low numbers to be at the top.
- https://savannah.gnu.org/bugs/?47223
- I dug into the bug tracker, and also dl'd source code. looks like i have an old version
- installing debian 10 resolved this (could also have used backports in stretch).