Напишите файл функции, который возвращает сумму положительных компонентов и сумму отрицательных компонентов входного вектора

#matlab #vector #sum #components

Вопрос:

Вопрос: Напишите файл функции, который возвращает сумму положительных компонентов и сумму отрицательных компонентов входного вектора.

Эта проблема должна быть решена в MATLAB, но я совершенно новичок в MATLAB? Может ли кто-нибудь дать представление о том, как это сделать?

Попытки:

 V= input(Enter a vector) 
function [Ps, Ns] = mysmallfunction(V)
Ps== sum(V(V>0));
Ns= sum(V(V<0));
end
 

Я не знаю, сработает это или нет.

Комментарии:

1. «Я не знаю, сработает это или нет». Почему бы не запустить его и не посмотреть? Это единственный способ, которым вы можете научиться программировать. Пробуйте и терпите неудачу, пробуйте и терпите неудачу снова и снова, пока не добьетесь успеха.

2. Обратите внимание, что == это сравнение . Используйте = для назначения .

Ответ №1:

У тебя это почти получилось. Ниже приведен сценарий, который проведет вас через передачу аргументов и вызов функции. Небольшой проблемой был двойник == для назначения Ps внутри функции (просто используйте = его, если это не для условного оператора). Чтобы вызвать/протестировать функцию, просто используйте строку [Ps, Ns] = mysmallfunction(V); над определением функции (в качестве альтернативы можно поместить определения функций в отдельные сценарии).

 V = input("Enter a vector: ");

%Function call%
[Ps, Ns] = mysmallfunction(V);

%Printing the results to the command window%
fprintf("The positive numbers sum up to %fn",Ps);
fprintf("The negative numbers sum up to %fn",Ns);


%*******************************************************************************************************%
%FUNCTION DEFINITION (this can alternatively go in a separate script named: mysmallfunction.m)%
%*******************************************************************************************************%

function [Ps, Ns] = mysmallfunction(V)
    Ps = sum(V(V>0));
    Ns = sum(V(V<0));
end
 

Командное окно (пример ввода)

Важно включить квадратные скобки, [] в данном случае при вводе вектора.

Введите вектор: [1 2 3 -2 -5]