Matlab 中while循環語句的用法
while語法:
while expression
statements
end
說明:while expression, statements, end 計算一個表達式,并在該表達式為 true 時在一個循環中重復執行一組語句。表達式的結果非空并且僅包含非零元素(邏輯值或實數值)時,該表達式為 true。否則,表達式為 false。
示例代碼如下:
function [sum] = summation(ratio, head, top)
sum = 0;
while (head <= top)
sum = sum + ratio ^ head;
head = head + 1;
end
end
假設ratio = 2,head = 0,top = 63
擴展資料:
Matlab控制流語句包括條件語句、循環和分支。
if, elseif, else 條件為 true 時執行語句。
for 用來重復指定次數的 for 循環。
parfor 并行循環。
switch, case, otherwise 執行多組語句中的一組。
try, catch 執行語句并捕獲產生的錯誤。
while 條件為 true 時重復執行的 while 循環。
break 終止執行 for 或 while 循環。
continue 將控制權傳遞給 for 或 while 循環的下一迭代。
end 終止代碼塊或指示最大數組索引。
pause 暫時停止執行 MATLAB。
return 將控制權返回給調用函數。
參考資料:
MathWorks文檔——while循環
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 尋找集合中。
問一下這個matlab語句的意思
randn
Normally distributed pseudorandom numbers
Syntax
r = randn(n)
randn(m,n)
randn([m,n])
randn(m,n,p,。)
randn([m,n,p,。])
randn(size(A))
r = randn(。, 'double')
r = randn(。, 'single')
Description
r = randn(n) returns an n-by-n matrix containing pseudorandom values drawn from the standard normal distribution. randn(m,n) or randn([m,n]) returns an m-by-n matrix. randn(m,n,p,。) or randn([m,n,p,。]) returns an m-by-n-by-p-by-。 array. randn returns a scalar. randn(size(A)) returns an array the same size as A.
r = randn(。, 'double') or r = randn(。, 'single') returns an array of normal values of the specified class
randn-產生一個正態分布的隨機數(整數)組
它的參數應當是數組維數以及數組元素的類型(double or single)
你所寫的語句中'seed'的意義不清楚
w=sqrt(Q)*randn(1,Bushu);表明Q的平方根與一個隨機數相乘
希望能幫到你。
MATLAB中,解釋語句
“fread”以二進制形式,從文件讀出數據。
語法1:[a,count]=fread(fid,size,precision)語法2:[a,count]=fread(fid,size,precision,skip)size: 不指定 :到尾返回讀。 N : 讀出N個數據,構成列向量。
inf : 讀出fid指向的打開的文件的全部數據。 [M,N] : 讀出N個數據,構成列向量,填入M*N矩陣precision(精度)precision(精度)規定了以浮點數、整型數、字符讀出時字節數。
matlab 的precision(精度)的表達式與c語言、fortran語言、是一致的。不規定precision(精度),則字符默認為: ucher、則數值默認為:雙精度 。
以下precision(精度)將保證讀出具有一致的體積。MATLAB C or Fortran Descriphon(精度)'char' 'char*l' 8 字節數,字符型'uchar' 'unsigned char' 8 字節數 'schar' 'signed char' 8 字節數,字符型'int8' 'integer*1' 8 字節數,整型數'intl6' 'integer*2' 16 字節數,整型數.'int32' 'integer*4' 32 字節數,整型數.'int64' 'integer*8' 64 字節數,整型數'uint8' 'integer*l' 8 字節數 'uintl6' 'integer*2' 16 字節數 'uint32' 'integer*4' 32 字節數 'uint64' 'integer*8' 64 字節數 'float32' 'real*4' 浮點數, 32 字節數'float64' 'real*8' 浮點數, 32 字節數以下precision(精度)將不保證讀出具有一致的體積。
MATLAB C or Fortran Descriphon(精度)'short' 'short' 16 字節數,整型數'int' 'int' 32 字節數,整型數'long' 'long' 32 (64) 字節數,整型數'uShort' 'Unsigned short' 16 字節數 'uint' 'Unsigned int' 32 字節數 'ulong' 'unsigned long' 32 (64) 字節數 'float' 'float' 浮點數, 32 字節數'double' 'double' 浮點數, 64 字節數以下precision(精度)規定讀出指定的體積n。'bitN' N字節數,整型數 1 追問: 第二句是把fid讀成二進制,存成讀出msg_len個數據,構成列向量,填入msg*msg_len矩陣的意思嗎?謝謝您。
追答: Fread:從文件中讀入二進制數據。語法為:[A,count] = fread(fid,size,precision,skip) 該語句利用 Fread 函數,從指定文件中讀取二進制數據并寫入矩陣 A。
Count 參數用于返回成功讀入的元素數量,為可選參數。輸入參數中,fid 是用 fopen 打開文件時返回的文件標識;size 用于指定讀入數據的元素數量,該參數可選,如果不指定則將文件的全部數據讀入;precision 指定讀入數據的精度,該參數可選,如果不指定,其缺省值為'uchar';skip也是可選參數,稱作循環因子,若指定 shikp 值且該值不為 1,則循環跳躍讀取數據,即按skip 指定的比例,周期性跳過一些數據,使得讀取的數據具有選擇性。
msg是矩陣的名字 msg_len是矩陣大小 評論0 0 0。
轉載請注明出處華閱文章網 » matlabor語句