請問高手:在matlab中,&和&&的區別
【轉】Matlab中的邏輯運算"&&"與"&","||"與"|"的區別 (2009-12-06 20:59:06)轉載標簽: 雜談 邏輯運算符:&與|或~非 “&”和“|”操作符可比較兩個標量或兩個同階矩陣.對于矩陣來說必須符合規則,如果A和B都是0-1矩陣,則A&B或A|B也都是0-1矩陣,這個0-1矩陣的元素是A和B對應元素之間邏輯運算的結果,邏輯操作符認定任何非零元素都為真,給出“1”,任何零元素都為假,給出“0”. 非(或邏輯非)是一元操作符,即~A:當A是非零時結果為“0”;當A為“0”時,結果為“1”.因此下列兩種表示:p | (~p) 結果為1.p & (~p) 結果為*和all函數在連接操作時很有用,設x是0-1向量,如果x中任意有一元素非零時,any(x)返回“1”,否則返回“0”;all(x)函數當x的所有元素非零時,返回“1”,否則也返回“0”.這些函數在if語句中經常被用到.如: if all(A<5) do something end另外,還有"&&"和"||"運算符,Matlab中的邏輯運算"&&"與"&","||"與"|"的區別如下:&&和||被稱為&和|的short circuit形式,A&B(1)首先判斷A的邏輯值,然后判斷B的值,然后進行邏輯與的計算。
(2)A和B可以為矩陣(e.g. A=[1 0],B=[0 0])。A&&B(1)首先判斷A的邏輯值,如果A的值為假,就可以判斷整個表達式的值為假,就不需要再判斷B的值。
(2)A和B不能是矩陣,只能是標量。"|"與“||”同理。
A&&B 首先判斷A的邏輯值,如果A的值為假,就可以判斷整個表達式的值為假,就不需要再判斷B的值。這種用法非常有用,如果A是一個計算量較小的函數,B是一個計算量較大的函數,那么首先判斷A對減少計算量是有好處的。
另外這也可以防止類似被0除的錯誤:flag=denum~=0 && num/denum>10if flag %Do Somethingend if上面的表達式就可以防止denum等于0的情況。當然,如果你希望在判斷的時候,對A和B表達式都進行計算,就應該使用標準的&或者|。
Matlab中的if和while語句中的邏輯與和邏輯或都是默認使用short-circuit形式。if flag=denum~=0 && num/denum>10 %Do Somethingend if與if flag=denum~=0 & num/denum>10 %Do Somethingend if執行的結果一樣符號 符號用途說明+ 加- 減.* 點乘 詳細說明help arith* 矩陣相乘^ 矩陣求冪.^ 點冪 左除 詳細說明help slash 右除. 點左除. 點右除kron 張量積 詳細說明help kron, 作分隔用,如把矩陣元素、向量參數、函數參數、幾個表達式分隔開來; (a)寫在一個表達式后面時,運算后命令窗口中不顯示表達式的計算結果(b)在創建矩陣的語句中指示一行元素的結束,例如m=[x y z;i j k]: (a)創建向量的表達式分隔符,如x=abc(b)a(,j)表示j列的所有行元素;a(i,)表示i行的所有列元素;a(13,4)表示第四列的第1行至第3行元素() 圓括號〔〕 創建數組、向量、矩陣或字符串(字母型){} 創建單元矩陣(cell array)或結構(struct)% 注釋符,特別當編寫自定義函數文件時,緊跟function后的注釋語句,在你使用help函數名時會顯示出來。
' (a)定義字符串用(b)向量或矩陣的共軛轉置符.' 一般轉置符。 表示MATLAB表達式繼續到下一行,增強代碼可讀性= 賦值符號== 等于關系運算符 小于,大于關系運算符 詳細說明help relop& 邏輯與 邏輯或~ 邏輯非xor 邏輯異或符號 符號用途說明+ 加- 減.* 點乘 詳細說明help arith* 矩陣相乘^ 矩陣求冪.^ 點冪 左除 詳細說明help slash 右除. 點左除. 點右除kron 張量積 詳細說明help kron, 作分隔用,如把矩陣元素、向量參數、函數參數、幾個表達式分隔開來; (a)寫在一個表達式后面時,運算后命令窗口中不顯示表達式的計算結果(b)在創建矩陣的語句中指示一行元素的結束,例如m=[x y z;i j k]: (a)創建向量的表達式分隔符,如x=abc(b)a(,j)表示j列的所有行元素;a(i,)表示i行的所有列元素;a(13,4)表示第四列的第1行至第3行元素() 圓括號〔〕 創建數組、向量、矩陣或字符串(字母型){} 創建單元矩陣(cell array)或結構(struct)% 注釋符,特別當編寫自定義函數文件時,緊跟function后的注釋語句,在你使用help函數名時會顯示出來。
' (a)定義字符串用(b)向量或矩陣的共軛轉置符.' 一般轉置符。 表示MATLAB表達式繼續到下一行,增強代碼可讀性= 賦值符號== 等于關系運算符 小于,大于關系運算符 詳細說明help relop& 邏輯與 邏輯或~ 邏輯非xor 邏輯異或資料來源:http://**s/blog_*。
在matlab 中if 語句
這個問題有點怪,
第一個問題,如果你是為了顯示的目的,建議你使用字符串的形式,因為matlab自動會把0000省略成0的。
a='0000';
若要用里面的數值,則可用一個函數轉過來str2num(a)=0;
第二個問題,看你的表示應該是判斷吧,可以用下面的語句實現你要的功能:
a=[(a>=10)]
第三個問題,如何把.M文件導成.dat文件,你說的是導出結果數據嗎?我還沒有聽說過直接把M文件變成dat文件。如果是導出數據的話,可以使用fprintf函數。fprintf 使用例子:
x = 0:.1:1; y = [x; exp(x)];
fid = fopen('*','w');
fprintf(fid,'%6.2f %12.8f\n',y);
fclose(fid);
matlab if語句
在MATLAB中,if語句有3種格式。
(1) 單分支if語句:if 條件 語句組 end當條件成立時,則執行語句組,執行完之后繼續執行if語句的后繼語句,若條件不成立,則直接執行if語句的后繼語句。 (2) 雙分支if語句:if 條件 語句組1 else 語句組2 end 當條件成立時,執行語句組1,否則執行語句組2,語句組1或語句組2執行后,再執行if語句的后繼語句。
(3) 多分支if語句:if 條件1 語句組1 elseif 條件2 語句組2 …… elseif 條件m 語句組m else 語句組n end語句用于實現多分支選擇結構。
轉載請注明出處華閱文章網 » matlab中if語句and