MATLAB学习(一)
后綴名為lg4的文件為lingo文件
線性規劃標準形式要用小于
unifrnd
R = unifrnd(A,B)
?
A和B可以是向量也可以是標量,若兩個都是向量,則兩者都是列向量或都是行向量,而且維數相等。從A到B產生一系列區間,若A和B均為向量,則區間個數等于他們的維數;若其中恰有一個是向量,假設A為向量,則區間個數等于A的維數;若兩個均為標量,則A?<= B,區間個數為1,且區間為[A,B]。然后在這一系列區間中隨機產生連續均勻分布的數組R并返回之。具體例子下述。
例1.
執行指令
>> x = [1:9];
>> y = [2:10];
>> unifrnd(x,y)
得到
ans =
??? 1.9595??? 2.6557??? 3.0357??? 4.8491??? 5.9340??? 6.6787??? 7.7577??? 8.7431??? 9.3922
從x到y產生區間[1,2],[2,3],[3,4],[4,5],[5,6],[6,7],[7,8],[8,9],[9.10].然后從每個區間產生一個隨機數,得到R。
例2.
執行指令
>> x = [1:3];
>> R1 = unifrnd(x,1);
>> R2 = unifrnd(1,x);
得到
R1 =
???? 1?? NaN?? NaN
R2 =
??? 1.0000??? 1.2769??? 1.0923
NaN表示"not a number"即不是數字。觀察語句R1 = unifrnd(x,1);“從x到1”產生區間[1,1],[2,1],[3,1]顯然只有第一個區間可以取得“隨機數”1,其余區間不符合規定,故而返回NaN。
觀察R2 = unifrnd(1,x);從1到x產生區間[1,1],[1,2],[1,3],取得隨機數組R2.
2.R = unifrnd(A,B,M,N,...) or R = unifrnd(A,B,[M,N,...])?
returns an M-by-N-by-... array.
sum函數:
每行的和,結果是列向量。
而缺省的sum(x)就是豎向相加,求每列的和,結果是行向量。
?
A>0的結果是得到一個邏輯矩陣,大小跟原來的A一致,
A中大于零的元素的位置置為1,小于等于零的位置置為0。
?
所以橫向求和以后,就是求A中每行大于零的元素個數。
?
例如
>> A=randn(5)
?
?
?
A =
?
?
???-0.4326????1.1909???-0.1867????0.1139????0.2944
???-1.6656????1.1892????0.7258????1.0668???-1.3362
????0.1253???-0.0376???-0.5883????0.0593????0.7143
????0.2877????0.3273????2.1832???-0.0956????1.6236
???-1.1465????0.1746???-0.1364???-0.8323???-0.6918
?
>> sum(A)
ans =
???-2.8316????2.8444????1.9976????0.3120????0.6043
?
>> sum(A>0)
ans =
?????2?????4?????2?????3?????3
?
>> sum(A<0)
ans =
?????3?????1?????3?????2?????2
?
>> sum(A,2)
ans =
?
????0.9800
???-0.0200
????0.2730
????4.3261
???-2.6324
?
?
>> sum(A>0,2)
ans =
?
?????3
?????3
?????3
?????4
?????1
?
sum(A<0,2)
ans =
?
?????2
?????2
?????2
?????1
?????4
矩陣換行相當于有;號
rand('state',sum(clock))在matlab中是什么意思
首先要知道一點計算機生成的隨機數都是偽隨機數,當然malab也不例外
而這些偽隨機數是怎樣生成的呢?大多是用同余來生成
比如x_n+1=(25173*x_n+13849) (mod 65536),而這些偽隨機數都需要一個初值x_0,這樣才能迭代
這個x_0就是此處的'state'參數,所以rand('state',sum(clock))的作用是定義一個隨時間變化的初值x_0。
作用:
matlab里面的隨機生成函數基本都是以rand為基函數通過函數關系式得到,比如 normrnd,unidrnd等,你每次重啟matlab后運行已編好的含隨機數生成的函數你將得到相同的結果,比如我的電腦上重啟matlab運行unidrnd(100),每次的值都是82,這是因為rand函數的初值都一樣,所以為了避免上述問題經常在程序前運行或加命令rand('state',sum(clock)),這樣重啟matlab,運行隨機數生成值就不同了。
?x=randi([0,99],1,5); %產生一行五列的區間[0,99]上的隨機整數
總結
以上是生活随笔為你收集整理的MATLAB学习(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring boot 中json数据处
- 下一篇: matlab学习(二)