简体   繁体   中英

Function with vector as argument in Octave

How can I make a function with a vector as input and a matrix as an output?

I have to write a function that will convert cubic meters to liters and English gallons. The input should be a vector containing volume values ​​in m ^ 3 to be converted. The result should be a matrix in which the first column contains the result in m ^ 3, the second liter, the third English gallon.

I tried this:

function [liter, gallon] = function1 (x=[a, b, c, d]);
  liter= a-10+d-c;
  gallon= b+15+c;
endfunction

You're almost there.

The x=[a,b,c,d] part is superfluous, your argument should be just x .

function [liter, gallon] = function1 (x);
  a = x(1); b = x(2); c = x(3); d = x(4);
  liter  = a - 10 + d - c;
  gallon = b + 15 + c;
endfunction

If you want your code to be safe and guard against improper inputs, you can perform such checks manually inside the function, eg

assert( nargin < 1 || nargin > 4, "Wrong number of inputs supplied"); 

The syntax x=[a,b,c,d] does not apply to octave; this is reserved for setting up default arguments, in which case a, b, c, and d should be given specific values that you'd want as the defaults. if you had said something like x = [1,2,3,4] , then this would be fine, and it would mean that if you called the function without an argument, it would set x up to this default value.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM