2014-09-22 13 views
0

我必須在我的matlab代碼中求解一個系統方程。Matlab - 處理來自`solve()函數的警告

起初,我試圖通過定義未知變量

syms x1 x2 x3 'real' 

,通過使用功能,可以解決

[sx1 sx2 sx3] = solve(f1 == 0, f2 == 0, f3 == 0); 

其中f1, f2, f3x1, x2, x3功能通過使用符號演算解決它。

我知道,有時辦法可以解決,但也有它的解決方案是不存在的情況下,我得到

Warning: Explicit solution could not be found. 

在這種情況下,我想以某種方式「捕捉」這樣的警告(不打印屏幕上沒有任何東西!)並運行其他代碼。

這怎麼能實現呢?

在此先感謝

+0

您是否嘗試在解決操作周圍包裝'try,catch'塊? – 2014-09-22 21:19:19

+0

您還應該嘗試打開'backtrace'上的警告,該例外時會打印堆棧跟蹤。您可以確定發生錯誤的級別並攔截它。除此之外,您可能只需要抑制警告。 – 2014-09-22 21:24:38

+0

@MylesBaker我試過了,它不起作用 – 2014-09-22 21:35:01

回答

1

如果你想檢查,看看是否解決找不到,你可以檢查,看看是否sx1, sx2, sx3是空的 - 如果沒有找到解決辦法,他們不會被分配的,所以將是空的。

[sx1 sx2 sx3] = solve(f1 == 0, f2 == 0, f3 == 0); 
if isempty(sx1) 
    % DO OTHER STUFF 
end 

如果你想避免顯示警告,您可以使用將其關閉:

warning off symbolic:solve:warnmsg3 

理想情況下,你應該再次只要你完成打開它,以防止可能出現混亂沿着軌道。