clear,clc %% 清理 % 注释 clc清除命令窗口 clear清除工作空间的内容 close all %% 关闭所有的figure窗口 whos 列出当前工作空间中的变量及信息 who Ctrl+c:中断程序运行 Esc或者Ctrl+u:清除一行 ctrl+R,注释程序 ctrl+T,取消注释 ctrl+i 代码自动按照规则缩进(ctrl+all全选代码,然后在ctrl+i格式化代码) help rand 获取函数的帮助信息 randn(1,10) 产生1X10矩阵的服从正态分布随机数,有小数randn('state',2); % 设置种子,便于重复执行 randn() 创建随机矩阵,服从正态分布 正态分布(Normal distribution)又名高斯分布(Gaussian distribution) rand('seed',2) % 设定随机数种子 rand(3,4) % 3*4矩阵 产生(0,1)之间的随机数 rand() 创建随机矩阵,服从均匀分布 产生(0,1)之间的随机数 randperm() 创建随机行向量 randperm(10) 10个随机数向量randperm(6,3) 3个小于6的随机数 -5:.2:5 -5到5差值为2,等差数列 ---------可视化------------------------------------------------------------- hold on 表示保留原来的图 画了一幅图,再画另一幅图时,原来的图还在,与新图共存 hold off 在轴上绘制的是新图,原图被替换了,画图(figure)的时候,取消原来的图 plot(x,y); 画出X,Y的直线 plot(x,y,'o'); 画出X,Y的点,以o表示点 '-o'线圈结合 o- *- m-粉色 *-k bo蓝色的o r*红色的* axis([-5,5,0,6]) 坐标轴范围x(-5-5),y(0-6) axis([0.5 1 -1 1]) subplot(2,1,1) 绘制两行一列的图像,选择第一个 subplot(1,2,1) subplot(1,2,2) xlabel('迭代次数'); ylabel('MSE'); title('均方差下降曲线');绘图标题 figure; 显示窗口 figure(1)显示新窗口1 figure(1);plot(t,y1) figure(2)显示新窗口2 figure(2);plot(t,y2) legend('原始数据点','最小二乘拟合直线'); 对绘图多个plot按先后加上标题 clf; 用来清除图形的命令 ------------结束------------------------------------------------------ tic 程序 toc 计算中间代码运行时间 fprintf('算法收敛于:\nw= (%f,%f),MSE: %f\n', w(1), w(2), ms(i)); 控制台输出文字和参数 disp('my test') disp(3) test=3;disp(['my test=',num2str(test)]) 输出 0.1>=0.5 满足输出1不满足输出0 repmat(A,m,n)功能是以A的内容堆叠在(MxN)repmat(M,v,h) 将矩阵 M 在垂直方向上聚合 v 次,在水平方向上聚合 h 次 B = reshape(A,m,n)返回一个m*n的矩阵B, B中元素是按列从A中得到的。如果A中元素个数没有m*n个, 则会引发错误 reshape(A,2,3) 向量转矩阵按列排序 reshape(a,4,5)'转置后按行排序 a(:) a矩阵转换成向量 Y' Y的转置 Y.^2 矩阵运算Y*Y不需要带点 矩阵里值的运算带点Y.^2 pinv(A) 矩阵的伪逆逆矩阵(奇异矩阵或者非方阵,并不存在逆矩阵) inv(A) 矩阵为非奇异方阵,则存在逆矩阵inv(A) P=[0,0,1,1;0,1,0,1] 构建了一个2x4矩阵 下标从1开始 ones(1,6) 将1排列成1行6列 ones( ) 创建一个所有元素都为 1 的矩阵,其中可以制定维数,1,2….个变量 zeros() 创建一个所有元素都为 0 的矩阵zeros(2,3) 2x3的0矩阵 eye() 创建对角元素为 1,其他元素为 0 的矩阵 eye(3,3) diag() 根据向量创建对角矩阵,即以向量的元素为对角元素diag([1,2,3]) 对角线元素为1,2,3的对焦矩阵 magic(3) 生成3x3的魔方矩阵,横竖斜加起来等于一个数 minmax(x) x的最小值和最大值[1,10] max(A,[],1) 矩阵每一列的最大值 max(A)默认矩阵每一列的最大值 max(A,[],2) 矩阵每一行的最大值 max(A(:))矩阵最大值 C=[A B] 两个mxn矩阵并列mx2n C=[A;B] 两个mxn矩阵并列2mx2 SampIn=[0,0,1,1;... %这里...方便换行显示数据,类似连接符 0,1,0,1;... 1,1,1,1] concur([0; -1],3) 将一个向量重复3次 prod(a) 向量积 sum(a)和 ceil ceil(1.2)=1 舍入函数。ceil的作用是向正方向舍入 fix floor round 向零舍入、朝负方向舍入、round是四舍五入函数 p([1,5,7],1) 选取矩阵下标为1,5,7行的第一列 vec2ind 向量变索引 把每列为1的行号记录 [1,2,1]意思是第一列第一行为1第二列第二行为1第三列第一行为1其余为0[1,0,1;0,1,0] ind2vec索引变向量 full(ind2vec([1 3 2 3])) % full()稀疏矩阵转换为普通矩阵 norm(A) 范数计算 1==2 假输出0 1~=2 1不等于2,真输出1 sqrt(9) 开平方 size(A) A矩阵的维度mxn size(A,1) m求矩阵的行数 size(A,2) n求矩阵的列数 length(a) a向量的长度 ---------文件读入写出--------------------------------------------------------------- STR=sprintf('%s%d','D:\\data2\\',k,'.mat'); 拼接字符串 save(STR,'inf', 'rec', 'minf'); 写出 save 文件名 不写地址默认当前目录save aa save('D:\\aa.mat') load(STR,'inf', 'rec', 'minf'); 读入load(地址,变量名) load data.txt dlmwrite('aas.txt', data, '\t') 将矩阵data保存到当前目录aas.txt 分隔符为\t“\t”表示tab分割,“,”为默认分割符 importdata('aas.txt',',') 将filename中的数据导入到工作区中,以delimiter指定的符号作为分隔符; fopen+fprintf保存数据到文本 a=[1 2 3 4 5 6 7 8 9]; fid=fopen('b.txt','wt'); %打开文件 r读w写 fprintf(fid,'%g\n',a); %写出并且换行 fclose(fid); ------------结束--------------------------------------------------------------------- for i=1:10 fprintf('数字%f\n',i); disp(i); end i=1 while i<=5 i=i+1; fprintf('第%f次\n',i); end if 1==1 disp('1==1') end 归一化函数 mapminmax矩阵的每一行归一到[a b].默认为[-1 1]. [y,ps] = mapminmax(x,ymin,ymax) 对应关系PS temp= mapminmax('apply',260,PS) y= mapminmax(x,ymin,ymax) x是你想要归一化的矩阵,ymin,ymax分别是你想要归一化的区间, 如你想要吧数据归一化到[0,1]之间,则ymin=0,ymax=1,默认是[-1,1],此函数归一化是按行进行的, 即选取一行中的最大值xmax和最小值xmin 按公式y = (ymax - ymin)*(x - xmin)/(xmax - xmin) + ymin; 计算得出一行中的各个归一化后的数据 把归一的数据还原时,可以用以下命令: yreal = mapminmax('reverse',y1,PS) abs(-5)求绝对值 mod(a,b)就是求的是a除以b的余数 mod(17,6) =5