亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何優雅地忽略MATLAB函數的某些返回值?

如何優雅地忽略MATLAB函數的某些返回值?

GCT1015 2019-10-18 10:33:58
是否可以從函數中獲取“ 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第三個參數,我還驗證了該技術是否適用)


查看完整回答
反對 回復 2019-10-18
?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

使用MATLAB版本7.9(R2009b),您可以使用?,例如,


[~, ~, variableThatIWillUse] = myFunction();

請注意,,不是可選的。僅輸入[~ ~ var]將不起作用,并且會引發錯誤。



查看完整回答
反對 回復 2019-10-18
  • 3 回答
  • 0 關注
  • 2350 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號