matlab &與&&的區別
Matlab中的邏輯運算"&&"與"&",都是與的意思,但是有以下幾個區別。
1、判斷過程:
A&B:首先判斷A的邏輯值,然后判斷B的值,然后進行邏輯與的計算。
A&&B:首先判斷A的邏輯值,如果A的值為假,就可以判斷整個表達式的值為假,就不需要再判斷B的值。
2、使用方法:
A&B:A和B不僅可以為標量,還可以為矩陣(e.g. A=[1 2 3],B=[0 1 0])
A&&B:A和B不能是矩陣,只能是標量。
擴展資料:
與&&和&類似的一組邏輯運算符號:||和|。這兩個都是或的意思,并且同理于&&和&,只不過是“或”的邏輯。
那么出現這樣的原因是因為:
A&&B 首先判斷A的邏輯值,如果A的值為假,就可以判斷整個表達式的值為假,就不需要再判斷B的值。
這種用法非常有用,如果A是一個計算量較小的函數,B是一個計算量較大的函數,那么首先判斷A對減少計算量是有好處的。
另外這也可以防止類似被0除的錯誤。
matlab if語句
function dh=jiangyu (t,h)
%降雨量的表達式
if t<=400
a=6*12*(0.122*10^(-3)-abs(0.00061*t*10^(-3)-0.122*10^(-3)))*cos(pi/9);
else
a=0;
end
%液面高度微分方程中的其他部分:
b=0.7*pi*(0.05)^2*sqrt(2*9.81*h);
c=2*12*sqrt(0.15*h-h^2);
%使結果符合客觀事實,增加下面的判定
z=isreal((a-b)/c);
%如果液面高度正常為大于零的數,便按所設微分方程求解
if z==1
dh=(a-b)/c;
%如果液面高度小于零,且此時不再下雨,則液面不再變化
elseif (z==0 & a==0)
dh=0;
%如果液面高度小于零,但仍然下雨,則液面將會上升,速度為下式
else
h=0.0001;
dh=(a-b)/c;
end
end
你的判斷等于要改成 ==
沒有and這個用法的,用&
表并列直接回車就行了
你的c可能是虛數,注意~
matlab 如何使用循環語句
一、基本技術 ----------------------------------------------------- 1)MATLAB索引或引用(MATLAB Indexing or Referencing) 在MATLAB中有三種基本方法可以選取一個矩陣的子陣。
它們分別是 下標法,線性法和邏輯法(subscripted, linear, and logical)。 如果你已經熟悉這個內容,請跳過本節 1.1)下標法 非常簡單,看幾個例子就好。
A = 6:12; A([3,5]) ans = 8 10 A([3:2:end]) ans = 8 10 12 A = [11 14 17; 。 12 15 18; 。
13 16 19]; A(2:3,2) ans = 15 16 1.2)線性法 二維矩陣以列優先順序可以線性展開,可以通過現行展開后的元素序號 來訪問元素。 A = [11 14 17; 。
12 15 18; 。 13 16 19]; A(6) ans = 16 A([3,1,8]) ans = 13 11 18 A([3;1;8]) ans = 13 11 18 1.3)邏輯法 用一個和原矩陣具有相同尺寸的0-1矩陣,可以索引元素。
在某個 位置上為1表示選取元素,否則不選。得到的結果是一個向量。
A = 6:10; A(logical([0 0 1 0 1])) ans = 8 10 A = [1 2 3 4]; B = [1 0 0 1]; A(logical(B)) ans = 1 4 ----------------------------------------------------- 2)數組操作和矩陣操作(Array Operations vs. Matrix Operations) 對矩陣的元素一個一個孤立進行的操作稱作數組操作;而把矩陣視為 一個整體進行的運算則成為矩陣操作。MATLAB運算符*,/,,^都是矩陣 運算,而相應的數組操作則是.*, ./, ., .^ A=[1 0 ;0 1]; B=[0 1 ;1 0]; A*B % 矩陣乘法 ans = 0 1 1 0 A.*B % A和B對應項相乘 ans = 0 0 0 0 ------------------------------------------------------ 3)布朗數組操作(Boolean Array Operations) 對矩陣的比較運算是數組操作,也就是說,是對每個元素孤立進行的。
因此其結果就不是一個“真”或者“假”,而是一堆“真假”。這個 結果就是布朗數組。
D = [-0.2 1.0 1.5 3.0 -1.0 4.2 3.14]; D >= 0 ans = 0 1 1 1 0 1 1 如果想選出D中的正元素: D = D(D>0) D = 1.0000 1.5000 3.0000 4.2000 3.1400 除此之外,MATLAB運算中會出現NaN,Inf,-Inf。對它們的比較參見下例 Inf==Inf返回真 InfNaN==NaN返回假 同時,可以用isinf,isnan判斷,用法可以顧名思義。
在比較兩個矩陣大小時,矩陣必須具有相同的尺寸,否則會報錯。這是 你用的上size和isequal,isequalwithequalnans(R13及以后)。
------------------------------------------------------ 4)從向量構建矩陣(Constructing Matrices from Vectors) 在MATLAB中創建常數矩陣非常簡單,大家經常使用的是: A = ones(5,5)*10 但你是否知道,這個乘法是不必要的? A = 10; A = A(ones(5,5)) A = 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 類似的例子還有: v = (1:5)'; n = 3; M = v(:,ones(n,1)) M = 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 事實上,上述過程還有一種更加容易理解的實現方法: A = repmat(10,[5 5]); M = repmat([1:5]', [1,3]); 其中repmat的含義是把一個矩陣重復平鋪,生成較大矩陣。 更多詳細情況,參見函數repmat和meshgrid。
----------------------------------------------------- 5)相關函數列表(Utility Functions) ones 全1矩陣 zeros 全0矩陣 reshape 修改矩陣形狀 repmat 矩陣平鋪 meshgrid 3維plot需要用到的X-Y網格矩陣 ndgrid n維plot需要用到的X-Y-Z。網格矩陣 filter 一維數字濾波器,當數組元素前后相關時特別有用。
cumsum 數組元素的逐步累計 cumprod 數組元素的逐步累計 eye 單位矩陣 diag 生成對角矩陣或者求矩陣對角線 spdiags 稀疏對角矩陣 gallery 不同類型矩陣庫 pascal Pascal 矩陣 hankel Hankel 矩陣 toeplitz Toeplitz 矩陣 ========================================================== 二、擴充的例子 ------------------------------------------------------ 6)作用于兩個向量的矩陣函數 假設我們要計算兩個變量的函數F F(x,y) = x*exp(-x^2 - y^2) 我們有一系列x值,保存在x向量中,同時我們還有一系列y值。 我們要對向量x上的每個點和向量y上的每個點計算F值。
換句話 說,我們要計算對于給定向量x和y的所確定的網格上的F值。 使用meshgrid,我們可以復制x和y來建立合適的輸入向量。
然后 可以使用第2節中的方法來計算這個函數。 x = (-2:.2:2); y = (-1.5:.2:1.5)'; [X,Y] = meshgrid(x, y); F = X .* exp(-X.^2 - Y.^2); 如果函數F具有某些性質,你甚至可以不用meshgrid,比如 F(x,y) = x*y ,則可以直接用向量外積 x = (-2:2); y = (-1.5:.5:1.5); x'*y 在用兩個向量建立矩陣時,在有些情況下,稀疏矩陣可以更加有 效地利用存儲空間,并實現有效的算法。
我們將在第8節中以一個 實例來進行更詳細地討論. -------------------------------------------------------- 7)排序、設置和計數(Ordering, Setting, and Counting Operations) 在迄今為止討論過的例子中,對向量中一個元素的計算都是獨立 于同一向量的其他元素的。但是,在許多應用中,你要做的計算 則可能與其它元素密切相關。
例如,假設你用一個向量x來表示一 個集合。不觀察向量的其他元素,你并不知道某個元素是不是一 個冗余元素,并應該被去掉。
如何在不使用循環語句的情況下刪除 冗余元素,至少在現在,并不是一個明顯可以解決的問題。 解決這類問題需要相當的智巧。
以下介紹一些可用的基本工具 max 最大元素 min 最小元素 sort 遞增排序 unique 尋找集合中。
轉載請注明出處華閱文章網 » matlaband語句