1. 程式人生 > >MATLAB語言中的assert斷言函式

MATLAB語言中的assert斷言函式

MATLAB語言沒有系統的斷言函式,但有錯誤報告函式 error 和 warning。由於要求對引數的保護,需要對輸入引數或處理過程中的一些狀態進行判斷,判斷程式能否/是否需要繼續執行。在matlab中經常使用到這樣的程式碼:

if c<0
    error(['c = ' num2str(c) '<0, error!']);
end


雖然無傷大雅,可也不好看,如果借用assert函式,就可以寫成

assert(c>=0, ['c = ' num2str(c) '<0 is impossible!']);


雖然系統要多執行一些(後面的引數必須先解釋出來再執行assert函式),但在保證程式可讀性和正確性方面功勞是很大的。當然,如果不想損失效能,直接寫成

assert(c>=0);


即可。

下面給出自定義的assert函式程式碼:

%% 斷言函式 assert
% 2011年8月7日23:12:48 [email protected]'an
% 在程式中確保某些條件成立,否則呼叫系統 error 函式終止執行。
% 使用示例:
%  assert(1==1)
%  assert(1+1==2, '1+1~=2')
%  assert(x>=low_bounce && x<=up_bounce, 'x is not in [low_bounce, up_bounce]');
% 輸入引數說明:
% c       - 斷言判斷條件
% msg_str - 斷言失敗時顯示提示內容
function assert(c, msg_str)
if c, return; end  % 斷言成立,直接返回
if nargin>1
    error(['assert failure: ', msg_str]);
else
    error('assert failure: Assertion does not hold!');
end
end

相關推薦

MATLAB言中assert斷言函式

MATLAB語言沒有系統的斷言函式,但有錯誤報告函式 error 和 warning。由於要求對引數的保護,需要對輸入引數或處理過程中的一些狀態進行判斷,判斷程式能否/是否需要繼續執行。在matlab中經常使用到這樣的程式碼: if c<0 error(['

C言中assert函式的用法

  2)每個assert只檢驗一個條件,因為同時檢驗多個條件時,如果斷言失敗,無法直觀的判斷是哪個條件失敗   不好: assert(nOffset>=0 && nOffset+nSize<=m_nInfomationSize);   好:  assert(nOffset >

關於c++言中的sort函式

關於sort 函式 1.需要包含標頭檔案<algorithm>, 2.若直接用sort函式,一定要開啟他的域   using namespace std; 3.使用該函式需注意sort()包含3個引數  sort(a,b,c)其中a,b,為一個具體的數c可以是一個函式

python-assert斷言函式用法

0.摘要 本文介紹了assert的用法,以及使用assert判斷兩連個array陣列是否相等。 1.斷言函式作用 斷言函式是對錶達式布林值的判斷,要求表示式計算值必須為真。可用於自動除錯。 如果表示式為假,觸發異常;如果表示式為真,不執行任何操作。 2.斷言

關於C言中的scanf()函式

在《C Primer Plus》中有如下程式碼: ...... while(scanf("%d", &num)) { ... } ...... 當輸入不是整數的時候就停止迴圈 那麼是不是也可以試試這樣呢? ...... while (scanf"%d"

C言中的Scanf函式常見用法之陷阱總結:

C語言中的Scanf函式常見用法之陷阱總結:  // C/C++語言中,scanf函式使用陷阱注意: //常見使用方式一: scanf("%d",&a,&b);----遇到空格或\n或非數字結束 //常見使用方式二: scanf("%s",array);----遇到

Go言中的init函式

今天來了解一下Go語言中的init函式 Go語言中有兩個保留的函式:main函式和init函式 init函式的特性如下: init函式沒有引數和返回值; init函式不能被其他函式呼叫,只能被Go程式自動呼叫; 一個package中可以包含多個init函式; 一個go檔案

R言中的scale函式及標準化和歸一化的理解

在不同組資料間存在差異時,經常要進行標準化或者歸一化處理,標準化,歸一化及scale的具體理解見https://blog.csdn.net/tanzuozhev/article/details/50602051,待我日後

C言中的Sleep函式

Sleep函式: 功 能: 執行掛起一段時間   用 法: unsigned sleep(unsigned seconds);   注意:   在VC中使用帶上標頭檔案#include <windows.h>,在Linux下,gcc編譯器中,使用的標頭

Python assert 斷言函式

使用assert斷言是學習python一個非常好的習慣,python assert 斷言句語格式及用法很簡單。在沒完善一個程式之前,我們不知道程式在哪裡會出錯,與其讓它在執行最崩潰,不如在出現錯誤條件時就崩潰,這時候就需要assert斷言的幫助。本文主要是講as

C言中的system函式引數詳解

http://blog.csdn.net/pipisorry/article/details/33024727 函式名: system   功   能: 發出一個DOS命令   用   法: int system(char *command);   system函式已

C言中的SYSTEM函式

system函式 是可以呼叫一些DOS命令,比如 system("cls");//清屏,等於在DOS上使用cls命令 下面列出常用的DOS命令,都可以用system函式呼叫: ASSOC 顯示或修改副檔名關聯。 AT 計劃在計算機上執行的命令和程式。 ATTRIB 顯示或更改檔案屬性。 BREAK 設定或清除

C言中斷言的使用

標準C中的斷言函式assert(),如果斷言函式的引數為0時將觸發斷言函式的執行,會在執行時程式崩潰。 我從FreeRTOS中學到,FreeRTOS中的斷言函式configASSERT()和標準C中的斷言函式assert()是一樣的, 我們可以重新利用他,下面我用一個簡單的

函式中有多個return?C言中,一個函式可以有幾個返回值?

      在移植wifi的程式碼時,遇到了一些與下面類似的函式,這些函式中有不只一個return,這可是個新鮮的玩意兒: int func (int b) { int a=5; if (a>b) return a; else

linux下C言中的flock函式用法 .

  表頭檔案  #include<sys/file.h>   定義函式  int flock(int fd,int operation);   函式說明  flock()會依引數operation所指定的方式對引數fd所指的檔案做各種鎖定或解除鎖定的動作。此函式

C言中的time函式總結

程式設計中經常用到時間表達及轉換的函式,它們都定義在time.h庫函式中,在此做一下總結,以方便後續檢視使用。 幾個時間概念: 1:Coordinated Universal Time(UTC): 協調世界時,又稱世界標準時間,也即格林威治標準時間(G

c言中assert函式

  函式名: assert   功 能: 測試一個條件並可能使程式終止   用 法: void assert(int test);   程式例:   #include <assert.h>   #include <stdio.h>   #include

C言中static修飾的函式和普通函式的區別

用static修飾的函式,本限定在本原始碼檔案中,不能被本原始碼檔案以外的程式碼檔案呼叫。而普通的函式,預設是extern的,也就是說,可以被其它程式碼檔案呼叫該函式。 在函式的返回型別前加上關鍵字static,函式就被定義成為靜態函式。普通 函式的定義和宣告預設情況下是extern的,但靜

c言中 gotoxy() 函式的使用

轉自  https://blog.csdn.net/radjedef/article/details/79028329 #include <stdio.h> #include <windows.h> void gotoxy(int x, int y) {

關於C言中printf函式“輸出歧視”的問題

目錄 關於C語言中printf函式“輸出歧視”的問題 問題描述 探索問題原因 另一種研究方法 問題結論 關於C語言中printf函式“輸出歧視”的問題 問題描述 昨天晚上被問到一個問題,為什麼在同一個printf函式中兩次輸出一個double型變