Функция с вектором в качестве аргумента в октаве - PullRequest
0 голосов
/ 07 января 2020

Как я могу сделать функцию с вектором в качестве входа и матрицей в качестве выхода?

Мне нужно написать функцию, которая преобразует кубические c метры в литры и английские sh галлоны. Входными данными должен быть вектор, содержащий объемные значения в м ^ 3 для преобразования. Результатом должна быть матрица, в которой первый столбец содержит результат в m ^ 3, второй литр, третий Engli sh галлон.

Я пробовал это:

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

1 Ответ

0 голосов
/ 07 января 2020

Вы почти на месте.

Часть x=[a,b,c,d] является излишней, ваш аргумент должен быть просто 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

Если вы хотите, чтобы ваш код был безопасным и Для защиты от неправильных вводов вы можете выполнять такие проверки вручную внутри функции, например,

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

Синтаксис x=[a,b,c,d] не применяется к октаве; это зарезервировано для установки аргументов по умолчанию, в этом случае a, b, c и d должны быть заданы c значениями, которые вы хотите использовать в качестве значений по умолчанию. если бы вы сказали что-то вроде x = [1,2,3,4], тогда это было бы хорошо, и это означало бы, что если бы вы вызывали функцию без аргумента, она установила бы x до этого значения по умолчанию.

...