Professional Documents
Culture Documents
Mở chương trình MATLAB và thực hiện các bài tập sau trong cửa sổ Command line:
• x(3)=5
• x(1:7)=3 1 5 7 9 2 6
• x(1:end)= 3 1 5 7 9 2 6
• x(1:end-1)= 3 1 5 7 9 2
• x(6:-1:1) = 2 7 1
• x([1 6 2 1 1])= 3 2 1 3 3
• sum(x)= 33
e. Tính độ lệch chuẩn trung bình mỗi cột của A(độ lệch chuẩn trung bình
được tính bằng độ lệch chuẩn (standard deviation) chia cho căn bậc 2
của số phần tử dùng để tính giá trị trung bình.
Phương pháp tính Độ Lệch chuẩn Standard Deviation từ một dãy n giá trị cho trước x1, x2,...xn:
2. Với mỗi phần tử trong dãy số đã cho, tính độ lệch (deviation) của nó so với Trung Bình-mean
3. Tính bình phương của các giá trị thu được ở bước 2.
4. Tìm mean của các bình phương độ lệch tìm được ở bước 3. Các giá trị này được biết đến như là variance σ 2.
5. Tính căn bậc hai (square root) của variance ta được kết quả cần tìm.
Xem ví dụ cụ thể : Cho dãy số gồm 8 số
Xem sét sự khác biệt từng phần tử của nó với trị trung bình
Sau đó tính trung bình các bình phương độ lệch trên ta được Population Standard Deviation
Thông thường phức tạp hơn ta áp dụng một cách chính xác để có độ lệch chuẩn mẫu : tức không chia
8 mà chia cho 7 ở phép tính cuối này . (vì 8-1=7 ) . Sample Standard Deviation
+ Nếu chưa hiểu rõ thì có thể xem thêm tại đây (http://minimaxg.congdongit.org/DlChuan.pdf )
Vậy trở lại câu e : Tính độ lệch chuẩn trung bình mỗi cột của A(độ lệch chuẩn trung bình
được tính bằng độ lệch chuẩn (standard deviation) chia cho căn bậc 2
của số phần tử dùng để tính giá trị trung bình.
Ta có
2 4 1
A = 6 7 2
3 5 9
>>B=mean(A)
B=
3.6667 5.3333 4.0000
>>C=[B;B;B]
C=
3.6667 5.3333 4.0000
3.6667 5.3333 4.0000
3.6667 5.3333 4.0000
>>E=A-C
E=
-1.6667 -1.3333 -3.0000
2.3333 1.6667 -2.0000
-0.6667 -0.3333 5.0000
>>F=E.*E
F=
2.7778 1.7778 9.0000
5.4444 2.7778 4.0000
0.4444 0.1111 25.0000
>> G=sum(F)
G=
8.6667 4.6667 38.0000
>> H=G/(size(A,1)-1)
H=
4.3333 2.3333 19.0000
>> L=sqrt(H)
L=
2.0817 1.5275 4.3589 . (Sample Standard Deviation)
>>e= L/sqrt(size(A,1))
=
1.2019 0.8819 2.5166
N = size(A,1), e = std(A)/sqrt(N)
e=
1.2019 0.8819 2.5166
Cú pháp std(X,0,1) cho cột và std(X,0,2) cho hàng với độ lệch mẫu tính bởi N-1
Cú pháp std(X,1,1) cho cột và std(X,1,2) cho hàng với độ lệch tính bởi N
a. Tạo ma trận E1 là 2 cột nằm giữa của ma trận C sử dụng toán tử ‘:’
E1=C(:,[2 3])
=> E1 =
9 5
7 2
3 4
2 8
a. x + y >Đúng
>>x+y
ans =
3 5 13
b. x + A > Sai vì hai ma trận khác kích cỡ
• ??? Error using ==> +
• Matrix dimensions must agree.
c. x' + y > Sai vì hai ma trận khác kích cỡ
• ??? Error using ==> +
• Matrix dimensions must agree.
d. A - [x' y'] > Sai vì hai ma trận khác kích cỡ
• ??? Error using ==> -
• Matrix dimensions must agree
e. [x ; y'] > Sai vì hai ma trận khác kích cỡ
• ??? Error using ==> vertcat
• All rows in the bracketed expression must have the same
• number of columns.
f. [x ; y] > Đúng
ans =
1 4 8
2 1 5
g. A - 3 > Đúng
ans =
0 -2 3
2 -1 4
5. Cho ma trận A = [2 7 9 7 ; 3 1 5 6 ; 8 1 2 5], giải thích kết quả các lệnh sau:
a. reshape(A,2,6)
ans =
2 8 1 9 2 6
3 7 1 5 7 5
Nếu
>> reshape(A,2,9) sẽ lỗi
??? Error using ==> reshape
To RESHAPE the number of elements must not change.
>>[ [ A ; sum(A) ]
ans =
2 7 9 7
3 1 5 6
8 1 2 5
13 9 16 18
>> B=A(:,1:2:end)
B=
2 9
3 5
8 2
e. Tính ma trận với các phần tử căn bậc 2 của mỗi phần tử trong A
>> C=sqrt(A(:,:))
C=
3.4799 2.5199 4.6583
2.2494 1.6340 3.7921
0 + 1.8276i 0 + 2.8107i 3.0381
7. Cho lệnh tạo dãy F như sau:
>> randn('seed',123456789)
>> F = randn(5,10);
1 1 1 1 1 1 1 1 1 1 y=
0
0
0
0
0
c. z = linspace(1,4,5)
z=
1.0000 1.7500 2.5000 3.2500 4.0000
d. t = logspace(1,3,3) e. u = rand(2,4)
t=
10 100 1000 ans =
9. Cho ma trận A=[12.11 -7.9 9.23; 5.06 6.35 21.7;-3.34 2.67 14.38]
a. Tìm ln của giá trị tuyệt đối tất cả các phần tử của A
>>A=abs(A(:,:));
>> log(A(:,:))
ans =
ans =
ans =
>> cos(A(:,:))
ans =
0.8977 -0.0460 -0.9811
0.3407 0.9978 -0.9579
-0.9804 -0.8908 -0.2405
D1. Làm tròn những phần tử của A đến số nguyên gần nhất.
>> round(A)
ans =
12 -8 9
5 6 22
-3 3 14
D2. Làm tròn những phần tử của A đến số nguyên lớn hơn. Làm tròn về dương
>> ceil(A)
ans =
13 -7 10
6 7 22
-3 3 15
D3. Làm tròn những phần tử của A đến số nguyên nhỏ hơn. Làm tròn về âm
>> floor(A)
ans =
12 -8 9
5 6 21
-4 2 14
D4. Làm tròn những phần tử của A về 0
>> fix(A)
ans =
12 -7 9
5 6 21
-3 2 14
e. xét dấu những phần tử của A
>> sign(A)
ans =
1 -1 1
1 1 1
-1 1 1
f. Tìm giá trị lớn nhất và nhỏ nhất của mỗi cột của A.
>> max(A)
ans =
12.1100 6.3500 21.7000
>> min(A)
ans =
-3.3400 -7.9000 9.2300
g. Sắp xếp những phần tử trong mỗi cột của A theo thứ tự tăng dần.
>> sort(A)
ans =
-3.3400 -7.9000 9.2300
5.0600 2.6700 14.3800
12.1100 6.3500 21.7000
h. Sắp xếp những phần tử trong mỗi cột của A theo thứ tự giảm dần.
>> B=sort(A)
B=
-3.3400 -7.9000 9.2300
5.0600 2.6700 14.3800
12.1100 6.3500 21.7000
>> A=B(end:-1:1,:)
A=
12.1100 6.3500 21.7000
5.0600 2.6700 14.3800
-3.3400 -7.9000 9.2300
i. Tìm cỡ của ma trận A.
>> [m,n]=size(A)
m=
3
n=
3
10. Giải các phương trình tuyến tính sau:
a)*
Ta thành lập các phương trình ma trận :
2 1 51 x1 5
1 1 −3 −4 x 2 −1
. =
3 6 −2 1 x 3 8
2 2 2 −3 x 4 2
A= [2 1 5 1 ;1 1 -3 -4; 3 6 -2 1;2 2 2 -3]
B= [5; -1 ; 8 ; 2]
A áp dụng giải phương trình ma trận
bằng ma trận nghịch đảo ta có:
A.X=B => X=A\B
x1 2
Vậy nghiệm của hệ là x 0.2
2 =
x3 0
x 4 0.8
*
b)--------------------------------------------------------------------------------------------------------------------
Ta thành lập các phương trình ma trận :
1 1 1 1 x1 2
1
2 3 4 x 2 2
. =
2 3 5 9 x 3 2
1 1 2 7 x 4 2
X=
x1 −2
-2 x 9
9 2 =
x 3 −6
-6
1 x 4 1
MATLAB EXERCISES 2
——Basic array exercises
1. Given x = [3 1 5 7 9 2 6], explain what the following commands "mean" by summarizing the net
result of the command.
a. x(3)
b. x(1:7)
c. x(1:end)
d. x(1:end-1)
e. x(6:-2:1)
f. x([1 6 2 1 1])
g. sum(x)
3. Given the arrays x = [1 4 8], y = [2 1 5] and A = [3 1 6 ; 5 2 7], determine which of the following
statements will correctly execute and provide the result.
If the command will not correctly execute, state why it will not. Using the command whos may be
helpful here.
a. x + y
b. x + A
c. x' + y
d. A - [x' y']
e. [x ; y']
f. [x ; y]
g. A - 3
4. Given the array A = [2 7 9 7 ; 3 1 5 6 ; 8 1 2 5], explain the results of the following commands:
a. A'
b. A(:,[1 4])
c. A([2 3],[3 1])
d. reshape(A,2,6)
e. A(:)
f. flipud(A)
g. fliplr(A)
h. [A A(end,:)]
i. A(1:3,:)
j. [A ; A(1:2,:)]
k. sum(A)
l. sum(A')
m. sum(A,2)
k. [ [ A ; sum(A) ] [ sum(A,2) ; sum(A(:)) ] ]
5. Given the array A from problem 4, above, provide the command that will
>> randn('seed',123456789)
>> F = randn(5,10);
a. Compute the mean of each column and assign the results to the elements of a vector called avg.
b. Compute the standard deviation of each column and assign the results to the elements of a
vector called s.
c. Compute the vector of t-scores that test the hypothesis that the mean of each column is no
different from zero.
d. If Pr(|t| > 2.132 ) = 0.1 with 4 degrees of freedom, are any of the mean values in the vector avg
statistically different from 0?
ANSWERS
2. A = [ 2 4 1 ; 6 7 2 ; 3 5 9]
x1 = A(1,:)
y = A(end-1:end,:)
c = sum(A)
d = sum(A,2) or d = sum(A')'
N = size(A,1), e = std(A)/sqrt(N)
5. A = [2 7 9 7 ; 3 1 5 6 ; 8 1 2 5]
B = A(:,2:2:end)
C = A(1:2:end,:)
c = reshape(A,4,3) or c = A' (they are different but are both 4x3)
d = 1./A , rats(d)
e = sqrt(A)
6. randn('seed',123456789)
F = randn(5,10);
N = size(F,1)
avg = mean(F)
s = std(F)
tscore = (avg - 0)./(s/sqrt(N))
None were different at 90% LOC (all < 2.132).