是否可以從函數中獲取“ nth”個返回值,而不必n-1在此之前為所有返回值創建偽變量?假設我在MATLAB中具有以下功能:function [a,b,c,d] = func()a = 1;b = 2;c = 3;d = 4;現在假設,我只對第三個返回值感興趣。這可以通過創建一個虛擬變量來實現:[dummy, dummy, variableThatIWillUse, dummy] = func;clear dummy;但是我認為這有點丑陋。我認為您可能可以執行以下操作之一,但不能:[_, _, variableThatIWillUse, _] = func;[, , variableThatIWillUse, ] = func;variableThatIWillUse = func(3);variableThatIWillUse = func()(3);是否有任何優雅的方式來做到這一點做的工作?到目前為止,最好的解決方案是簡單地將variableThatIWillUse用作虛擬變量。這使我不必創建一個真正的偽變量,該變量會污染工作空間(或者我需要清除)。簡而言之:解決方案是variableThatIWillUse對每個返回值使用直到有趣的值。之后的返回值可以簡單地忽略:[variableThatIWillUse, variableThatIWillUse, variableThatIWillUse] = func;我仍然認為這是非常丑陋的代碼,但是如果沒有更好的方法,那么我想我會接受答案。
3 回答

慕婉清6462132
TA貢獻1804條經驗 獲得超2個贊
這有點hack,但是可以用:
首先是一個簡單的示例函數:
Func3 = @() deal(1,2,3);
[a,b,c]=Func3();
% yields a=1, b=2, c=3
現在的關鍵是,如果您在多表達式分配的左側使用了兩次變量,則較早的分配將被較后的分配所破壞:
[b,b,c]=Func3();
% yields b=2, c=3
[c,c,c]=Func3();
% yields c=3
(編輯:只是為了檢查,[mu,mu,mu]=polyfit(x,y,n)如果您只關心polyfit第三個參數,我還驗證了該技術是否適用)

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
使用MATLAB版本7.9(R2009b),您可以使用?,例如,
[~, ~, variableThatIWillUse] = myFunction();
請注意,,不是可選的。僅輸入[~ ~ var]將不起作用,并且會引發錯誤。
- 3 回答
- 0 關注
- 2350 瀏覽
添加回答
舉報
0/150
提交
取消