Hej, I am trying to build a function with control over 3 arguments. However, I have detected a possible bug on R2018b.
The nargin control works perfectly for any number but 3!
Here you are a minimal example.
function y = myfunction(x1,x2,x3)
if nargin < 3
x3=false;
if nargin < 2
x2 = 0;
end
y = x1 + x2;
if x3
y = y/norm(y);
end
end
end

 採用された回答

per isakson
per isakson 2020 年 4 月 28 日
編集済み: per isakson 2020 年 4 月 28 日

1 投票

The example works as expected for me. It throws an error because no value is assigned to y
>> y = myfunction( 1, 2, true )
Output argument "y" (and maybe others) not assigned during call to "myfunction".
There is no else clause of the outer if-statement.
/R2018b

その他の回答 (1 件)

John D'Errico
John D'Errico 2020 年 4 月 28 日

0 投票

How is this a bug? Well, a bug in your code.
What do you expect to happen for 3 arguments? We see this test:
if nargin < 3
So if nargin ==3, then NOTHING inside the if executes. But that if statement controls the entire code inside your function.
Therefore the problem is when you call the function with 3 arguments, the output argument will never even be defined.
That is not a bug in MATLAB however. Not in any version of MATLAB.

1 件のコメント

Aldo Díaz
Aldo Díaz 2020 年 4 月 29 日
Sorry John for not being so good as you wished, but please don't go online crucifying people!

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeCommunications Toolbox についてさらに検索

製品

質問済み:

2020 年 4 月 28 日

コメント済み:

2020 年 4 月 29 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by