1.矩阵
fprintf('5x5 Identity Matrix: \n');%输出
A = [];
A = eye(5);%单位阵
det(A);求行列式
fprintf('Program paused. Press enter to continue.\n');
pause;%暂停,enter键继续
A‘矩阵的转置
A^2写成A’*A,因为要满足行列的关系
X(i,:)%矩阵的i行所有元素
X([1,3],:);%矩阵1、3行元素
X(:);%矩阵变向量
X = [ones(m, 1), data(:,1)]; % Add a column of ones to x,ones(m, 1):m行1列元素均为1的矩阵
theta = zeros(2, 1); % initialize fitting parameters,zeros(2, 1):2行1列元素均为0的矩阵
size(A);%输出是一个1×2矩阵,分别表示行和列
size(A,2);%矩阵A的第2个元素
c=[a b]或c=[a,b]与c=[a;b]
A*B %矩阵相乘
A.*B %矩阵对应元素相乘
A.*2 %矩阵每个元素平方
1./A %1除以A中每位元素
log(A) %每位求log
exp(A) %每位求以e为底的次方
abs(A) %每位求绝对值
[val, ind]= max(A)%将A中最大的元素存入val,对应的索引值存入ind
A<3 %将A中的每位元素与3比较,小于3为1,大于3为0
[r,c]=find(A<3 ) %A中元素小于3对应的索引值
magic(3) %生成各行各列相加值相等的3×3矩阵
sum(A) %列求和
sum(A,1) %每列求和
sum(A,2) %每行求和
sum(sum(A)) %矩阵求和
sum(A(:))%矩阵求和
prod(A) %列求积
floor(A) %向下四舍五入
ceil(A) %向下四舍五入
rand(3) %随机生成3×3矩阵
max(rand(3),rand(3)) %两个随机生成的矩阵对应最大的元素
max(A,[],1) %矩阵每列最大的元素
max(A,[],2) %矩阵每行最大的元素
max(A) %矩阵每列最大的元素
max(max(A)) %矩阵最大的元素
max(A(:)) %矩阵最大的元素
flipud(eye(3)) %反转与转置不同A’,结果如下
001
010
100
pinv(A) %伪求逆,可以求出不可逆矩阵的逆
inv(A) %求逆
2.读数据
data = load('ex1data1.txt');%读文档,文档有两列数据
X = data(:, 1); y = data(:, 2);%X为第一列,y为第二列
m = length(y); % number of training examples读取数据长度
3.画图
a.二维
figure; % open a new figure window
plot(x, y, 'rx', 'MarkerSize', 10); % Plot the data。rx红色x,10是MarkerSize
ylabel('Profit in $10,000s'); % Set the y axis label
xlabel('Population of City in 10,000s'); % Set the x axis label
hold on; % keep previous plot visible
plot(X(:,2), X*theta, '-')%画直线
legend('Training data', 'Linear regression')%图中的线的名称
hold off % don't overlay any more plots on this figure
如果要两张图分开显示,可以figure(1);plot(。。。);figure(2);plot(...);
subplot(1,2,1);%devides plot a 1×2 grid,access first element
plot(t,y1) ;%在第一个格子画图
subplot(1,2,2);%devides plot a 1×2 grid,access second element
plot(t,y2);
axis([0.5 1 -1 1]);%限制xy轴的坐标范围
clf;%清除图像
A=magic(5);
imagesc(A):%将矩阵可视化
imagesc(A),colorbar,colormap gray;%三个命令:矩阵可视化、显示颜色条、灰色图
b,三维
figure;
surf(theta0_vals, theta1_vals, J_vals)%分别表示x,y,z轴的变量
xlabel('\theta_0'); ylabel('\theta_1');%x,y轴名称,显示时为希腊字母及下角
c.等高线图
figure;
contour(theta0_vals, theta1_vals, J_vals, logspace(-2, 3, 20))
xlabel('\theta_0'); ylabel('\theta_1');
hold on;
plot(theta(1), theta(2), 'rx', 'MarkerSize', 10, 'LineWidth', 2);
contour是等高线绘制函数
contour(Z)根据矩阵Z画出等高线,Z是以x,y为平面的高度。Z必须是一个至少二维的矩阵。等高线的数量和水平线的值将根据Z值的最小值和最大值自动选择。x,y轴的范围是[1:n]和[1:m],[m,n]=size(Z)
contour(Z,n)用n条水平线来绘制Z的等高线。
contour(Z,v)是以向量v中的数据来绘制矩阵Z的等高线。等高水平线的个数等于向量v的长度。如果想画一条单个等高线,使用contour(Z,[i i]).
contour(X,Y,Z),contour(X,Y,Z,n),contour(X,Y,Z,v)绘制Z的等高线。X,Y限制在x,y轴上的范围。如果X,Y是矩阵,它们必须跟Z是同型矩阵,此时它们描述了一个表面,因此应当用surf函数定义一下
4.循环
matlab中循环从1开始。
v=zeros(10,1);
for i=1:10,
v(i)=2^i;
end;
indices=1:10;
for i=indices,
disp(i);
end;
i=1;
while i<=5,
v(i)=100;
i++;
end;
i=1;
while true;
v(i)=999;
i=i+1;
if i==6,
break;
end;
end;
5.条件语句
if ... ,...;
elseif ... , ...;
else ...;
end;