matlab条件and,matlaband语句
matlab &與&&的區(qū)別
Matlab中的邏輯運(yùn)算"&&"與"&",都是與的意思,但是有以下幾個(gè)區(qū)別。
1、判斷過程:
A&B:首先判斷A的邏輯值,然后判斷B的值,然后進(jìn)行邏輯與的計(jì)算。
A&&B:首先判斷A的邏輯值,如果A的值為假,就可以判斷整個(gè)表達(dá)式的值為假,就不需要再判斷B的值。
2、使用方法:
A&B:A和B不僅可以為標(biāo)量,還可以為矩陣(e.g. A=[1 2 3],B=[0 1 0])
A&&B:A和B不能是矩陣,只能是標(biāo)量。
擴(kuò)展資料:
與&&和&類似的一組邏輯運(yùn)算符號(hào):||和|。這兩個(gè)都是或的意思,并且同理于&&和&,只不過是“或”的邏輯。
那么出現(xiàn)這樣的原因是因?yàn)?#xff1a;
A&&B 首先判斷A的邏輯值,如果A的值為假,就可以判斷整個(gè)表達(dá)式的值為假,就不需要再判斷B的值。
這種用法非常有用,如果A是一個(gè)計(jì)算量較小的函數(shù),B是一個(gè)計(jì)算量較大的函數(shù),那么首先判斷A對(duì)減少計(jì)算量是有好處的。
另外這也可以防止類似被0除的錯(cuò)誤。
matlab if語句
function dh=jiangyu (t,h)
%降雨量的表達(dá)式
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);
%使結(jié)果符合客觀事實(shí),增加下面的判定
z=isreal((a-b)/c);
%如果液面高度正常為大于零的數(shù),便按所設(shè)微分方程求解
if z==1
dh=(a-b)/c;
%如果液面高度小于零,且此時(shí)不再下雨,則液面不再變化
elseif (z==0 & a==0)
dh=0;
%如果液面高度小于零,但仍然下雨,則液面將會(huì)上升,速度為下式
else
h=0.0001;
dh=(a-b)/c;
end
end
你的判斷等于要改成 ==
沒有and這個(gè)用法的,用&
表并列直接回車就行了
你的c可能是虛數(shù),注意~
matlab 如何使用循環(huán)語句
一、基本技術(shù) ----------------------------------------------------- 1)MATLAB索引或引用(MATLAB Indexing or Referencing) 在MATLAB中有三種基本方法可以選取一個(gè)矩陣的子陣。
它們分別是 下標(biāo)法,線性法和邏輯法(subscripted, linear, and logical)。 如果你已經(jīng)熟悉這個(gè)內(nèi)容,請(qǐng)?zhí)^本節(jié) 1.1)下標(biāo)法 非常簡(jiǎn)單,看幾個(gè)例子就好。
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)線性法 二維矩陣以列優(yōu)先順序可以線性展開,可以通過現(xiàn)行展開后的元素序號(hào) 來訪問元素。 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)邏輯法 用一個(gè)和原矩陣具有相同尺寸的0-1矩陣,可以索引元素。
在某個(gè) 位置上為1表示選取元素,否則不選。得到的結(jié)果是一個(gè)向量。
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)數(shù)組操作和矩陣操作(Array Operations vs. Matrix Operations) 對(duì)矩陣的元素一個(gè)一個(gè)孤立進(jìn)行的操作稱作數(shù)組操作;而把矩陣視為 一個(gè)整體進(jìn)行的運(yùn)算則成為矩陣操作。MATLAB運(yùn)算符*,/,,^都是矩陣 運(yùn)算,而相應(yīng)的數(shù)組操作則是.*, ./, ., .^ A=[1 0 ;0 1]; B=[0 1 ;1 0]; A*B % 矩陣乘法 ans = 0 1 1 0 A.*B % A和B對(duì)應(yīng)項(xiàng)相乘 ans = 0 0 0 0 ------------------------------------------------------ 3)布朗數(shù)組操作(Boolean Array Operations) 對(duì)矩陣的比較運(yùn)算是數(shù)組操作,也就是說,是對(duì)每個(gè)元素孤立進(jìn)行的。
因此其結(jié)果就不是一個(gè)“真”或者“假”,而是一堆“真假”。這個(gè) 結(jié)果就是布朗數(shù)組。
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運(yùn)算中會(huì)出現(xiàn)NaN,Inf,-Inf。對(duì)它們的比較參見下例 Inf==Inf返回真 InfNaN==NaN返回假 同時(shí),可以用isinf,isnan判斷,用法可以顧名思義。
在比較兩個(gè)矩陣大小時(shí),矩陣必須具有相同的尺寸,否則會(huì)報(bào)錯(cuò)。這是 你用的上size和isequal,isequalwithequalnans(R13及以后)。
------------------------------------------------------ 4)從向量構(gòu)建矩陣(Constructing Matrices from Vectors) 在MATLAB中創(chuàng)建常數(shù)矩陣非常簡(jiǎn)單,大家經(jīng)常使用的是: A = ones(5,5)*10 但你是否知道,這個(gè)乘法是不必要的? 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 事實(shí)上,上述過程還有一種更加容易理解的實(shí)現(xiàn)方法: A = repmat(10,[5 5]); M = repmat([1:5]', [1,3]); 其中repmat的含義是把一個(gè)矩陣重復(fù)平鋪,生成較大矩陣。 更多詳細(xì)情況,參見函數(shù)repmat和meshgrid。
----------------------------------------------------- 5)相關(guān)函數(shù)列表(Utility Functions) ones 全1矩陣 zeros 全0矩陣 reshape 修改矩陣形狀 repmat 矩陣平鋪 meshgrid 3維plot需要用到的X-Y網(wǎng)格矩陣 ndgrid n維plot需要用到的X-Y-Z。網(wǎng)格矩陣 filter 一維數(shù)字濾波器,當(dāng)數(shù)組元素前后相關(guān)時(shí)特別有用。
cumsum 數(shù)組元素的逐步累計(jì) cumprod 數(shù)組元素的逐步累計(jì) eye 單位矩陣 diag 生成對(duì)角矩陣或者求矩陣對(duì)角線 spdiags 稀疏對(duì)角矩陣 gallery 不同類型矩陣庫 pascal Pascal 矩陣 hankel Hankel 矩陣 toeplitz Toeplitz 矩陣 ========================================================== 二、擴(kuò)充的例子 ------------------------------------------------------ 6)作用于兩個(gè)向量的矩陣函數(shù) 假設(shè)我們要計(jì)算兩個(gè)變量的函數(shù)F F(x,y) = x*exp(-x^2 - y^2) 我們有一系列x值,保存在x向量中,同時(shí)我們還有一系列y值。 我們要對(duì)向量x上的每個(gè)點(diǎn)和向量y上的每個(gè)點(diǎn)計(jì)算F值。
換句話 說,我們要計(jì)算對(duì)于給定向量x和y的所確定的網(wǎng)格上的F值。 使用meshgrid,我們可以復(fù)制x和y來建立合適的輸入向量。
然后 可以使用第2節(jié)中的方法來計(jì)算這個(gè)函數(shù)。 x = (-2:.2:2); y = (-1.5:.2:1.5)'; [X,Y] = meshgrid(x, y); F = X .* exp(-X.^2 - Y.^2); 如果函數(shù)F具有某些性質(zhì),你甚至可以不用meshgrid,比如 F(x,y) = x*y ,則可以直接用向量外積 x = (-2:2); y = (-1.5:.5:1.5); x'*y 在用兩個(gè)向量建立矩陣時(shí),在有些情況下,稀疏矩陣可以更加有 效地利用存儲(chǔ)空間,并實(shí)現(xiàn)有效的算法。
我們將在第8節(jié)中以一個(gè) 實(shí)例來進(jìn)行更詳細(xì)地討論. -------------------------------------------------------- 7)排序、設(shè)置和計(jì)數(shù)(Ordering, Setting, and Counting Operations) 在迄今為止討論過的例子中,對(duì)向量中一個(gè)元素的計(jì)算都是獨(dú)立 于同一向量的其他元素的。但是,在許多應(yīng)用中,你要做的計(jì)算 則可能與其它元素密切相關(guān)。
例如,假設(shè)你用一個(gè)向量x來表示一 個(gè)集合。不觀察向量的其他元素,你并不知道某個(gè)元素是不是一 個(gè)冗余元素,并應(yīng)該被去掉。
如何在不使用循環(huán)語句的情況下刪除 冗余元素,至少在現(xiàn)在,并不是一個(gè)明顯可以解決的問題。 解決這類問題需要相當(dāng)?shù)闹乔伞?/p>
以下介紹一些可用的基本工具 max 最大元素 min 最小元素 sort 遞增排序 unique 尋找集合中。
總結(jié)
以上是生活随笔為你收集整理的matlab条件and,matlaband语句的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC程序设计——标尺的例子
- 下一篇: 黑客帝国代码雨的实现