本文共 6581 字,大约阅读时间需要 21 分钟。
data=imread('..\data\data1\fig.jpg');imshow(data)min(data(:)) % 0max(data(:)) % 247disp(max(data(:)));data=data/2;max(data(:)) % 124imshow(data)
解析:
data = imread('E:\ABCPhoto\practice\fig.jpg');
imshow(data)
max(data(:))
表示data中的所有数值都参与运算;a = data(:,:,1)
中a表示data中的第一波段;max(a(:))
表示计算第一波段中的最大值;注意:
;
:
reshape
imwrite(data, '..\tmp\fig.jpg');imwrite(data, '..\tmp\fig.tif');help imread // 帮助文档,查看书写格式help imwriteMenu: Help > Product Help > imread
解析:
imwrite
可以存储与书写数据,最后.jpg
与.tif
可以换成想要的格式help imread/imwrite
等命令可以查看帮助文档;或者直接在菜单栏中找到帮助窗口cd 'D:\tmp' % Change current working directorya=1:5b=6:10c=11:15d=16:20e=21:25data=[a;b;c;d;e] or data=[a,b,c,d,e] or data=[a b c d e]dlmwrite('data.csv', data)clear // 清空变量区的变量值type: help dlmwrite or dlmwrite
解析:
cd
转换工作文件夹csv
是 Comma Separated Values的缩写。dlmwrite
书写数据的时候可以用不同分隔符。若如上书写,则分隔符为,
。若写成dlmwrite('data.csv',data,'\t')
,则如下框中所示:clear
:清除所有变量与内存;clc
:清除屏幕而不清除内存>>data = [a;b;c;d;e]data = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25>>data = [a,b,c,d,e] or data=[a b c d e] 列 1 至 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 列 16 至 25 16 17 18 19 20 21 22 23 24 25
data=dlmread('..data\data1\data.csv’)- 读的是excel、asc、csv等- 读写图片用imread、imwritedlmwrite('data1.csv',data)dlmwrite('data2.txt',data*2)dlmwrite('data2.asc',data / 2)
解析:
.csv
、.txt
、.asc
均是文件存储的格式;xlsread is not recommended. Use readtable, readmatrix, or readcell instead. For more information, see Compatibility Considerations.
data = readmatrix('E:\MATLAB\math-geo\data.xlsx') // 想要确定输出矩阵中小数点精度,不知道怎么弄data1 = mean(data) // 按矩阵计算,算出了每一列的均值data2 = mean(data(:)) // 将矩阵转换成向量,算出了所有了数的均值// 可以进行套娃mean(data(:)) = mean(mean(data))
var()
函数定义的是样本方差,分母除的是(n-1)std()
函数定义的是样本标准差,分母除的是(n-1)1.cumsum()
可计算向量、矩阵、逻辑值。矩阵中可按行计算也可按列计算。
linspace()
线性等分向量。 3.interp1()
插值。 4.trapz()
计算基尼系数,梯形数值积分。 语法:Q = trapz(Y)Q = trapz(X,Y)Q = trapz(___,dim)说明:Q = trapz(Y) 通过梯形法计算 Y 的近似积分(采用单位间距)。Y 的大小确定求积分所沿用的维度:- 如果 Y 为向量,则 trapz(Y) 是 Y 的近似积分。- 如果 Y 为矩阵,则 trapz(Y) 对每列求积分并返回积分值的行向量。- 如果 Y 为多维数组,则 trapz(Y) 对其大小不等于 1 的第一个维度求积分。该维度的大小变为 1,而其他维度的大小保持不变。Q = trapz(X,Y) 根据 X 指定的坐标或标量间距对 Y 进行积分。- 如果 X 是坐标向量,则 length(X) 必须等于 Y 的大小不等于 1 的第一个维度的大小。- 如果 X 是标量间距,则 trapz(X,Y) 等于 X*trapz(Y)。Q = trapz(___,dim) 使用以前的任何语法沿维度 dim 求积分。必须指定 Y,也可以指定 X。如果指定 X,则它可以是长度等于 size(Y,dim) 的标量或向量。例如,如果 Y 为矩阵,则 trapz(X,Y,2) 对 Y 的每行求积分。
5.cftool()
拟合曲线。
box offax2 = axes('Position',get(gca,'Position'),... 'XAxisLocation','top',... 'YAxisLocation','right',... 'Color','none',... 'XColor','k','YColor','k');set(ax2,'YTick', []);set(ax2,'XTick', []);box on
7.去掉标注周围的黑框,用legend('boxoff')
。
axis([xmin xmax ymin ymax])
。只限定y轴ylim([ymin ymax])
。 % 数据标准化并计算相关系数mv=mean(data,1); % 计算各变量的均值st=std(data); % 计算各变量的标准差[n m]=size(data); % 计算矩阵的函数和列数X=(data-mv(ones(n,1),:))./st(ones(n,1),:); % 原始数据集体标准化R=corrcoef(X); % 计算相关系数矩阵% 主成分分析的完整计算过程[U,V]=eig(R); % 计算特征向量U和特征值矩阵VE=transpose(rot90(U)); % 将特征向量矩阵U旋转90度再转置G=rot90(rot90(V)); % 将对角矩阵旋转180度eigv=diag(G); % 提取对角矩阵的对角线元素per=100*eigv/sum(eigv); % 计算方差贡献百分比Cum=cumsum(per); % 计算方差贡献累积百分比C=sqrtm(G); % 将对角矩阵对角线元素化为平方根A=E*C; % 计算载荷矩阵H=A(:,1:3); % 提取第一、第二、第三主成分的载荷
1.随机生成三维的矩阵,a=rand([3,2,3]);
mean(a(:,1));
,按行计算平均值mean(a(:,2));
,按像元计算平均值mean(a(:,3));
,按波段计算平均值mean(mean(a));
3.计算每个波段的标准差 A(:,:,1)=[2 4; -2 -1];A(:,:,2)=[9 13; -5 7];A(:,:,3)=[4 4; 8 -3];S=std(A,0,[1 2])S = S(:,:,1) = 2.5000S(:,:,2) = 7.7460S(:,:,3) = 4.5735
1.两个%%加一个空格,可以将文本分区。
2.一般开头都用clear all; clc 原因:避免别的元素造成干扰。 3.用于做回归的函数regress
。去help看一下。 help 函数 在MATLAB中打开; helpwin 函数 在windows中打开; edit 函数 打开函数的具体代码。 4.当不想要函数输出的某些量,但需要得到后面的变量,可以打~。如[a,b,~,~,c]=regress(Y,X)
。 5.ctrl+c,打断命令。 6.plot(X(:,2),1,'o-')
,最右边的'o-'
的意思,会在图形上显示有圈圈。plot(Y,'v-')
这个会在图片上显示三角形,因此黑白打印时能区分曲线。画图时有颜色与形状区分。可双击图片对显示进行设置。对图像进行操作时,可右键显示代码,得到代码。 7.hold on,可在两条曲线画图的时候,先画一条,然后停下来,再继续画另一条。figure能显示图片,若没有figure,结果显示会被覆盖。 8.有很多图的时候,用close all关掉全部 8.ones(9,1)
九行一列的1,2*ones(9,1)
九行一列的2,zeros(9,1)
九行一列的0。 9.函数importdata
, 1.计算协方差矩阵cov(data);
[V,D]=eig(cov(data));
,对协方差矩阵求特征值和特征向量。根据D中的值大小进行排序;V是所求的旋转矩阵。 3.计算相关系数corr(data);
4.表示逆矩阵inv(data);
1.plotfit()
:进行多项式拟合。其数学原理
1.*
与.*
的区别:
*
表示普通的矩阵乘法,要求前面矩阵的列数等于后面矩阵的行数; .*
表示两个矩阵对应元素相乘,要求两个矩阵行数列数都相等。 例如A,B分别为两个矩阵,则:
A.*B
表示的是两个矩阵的对应元素相乘,其中生成的同阶矩阵C的对应的矩阵元素为:C(i,j)=A(i,j)*B(i,j)
;而如果A*B的话,则是正常的矩阵相乘,并非是对应的元素相乘。 >> a=[1 1 ; 1 1]a= 1 1 1 1>>a^2ans= 2 2 2 2>>a.^2ans= 1 1 1 1
2.除与点除
(1)数值运行时,两种没有区别。 (2)数值与矩阵运算时,要分数值在前还是在后。 a.数值在前,只能用./
。 b.数值在后,两者相同。 (3)矩阵与矩阵运算时,对应元素相除,要求两者行数列数相等。 (4)矩阵除矩阵,A/B
可粗略地看作A*inv(B)
; 在可逆形式下转换成逆矩阵,右除对右边矩阵逆,左除对左边矩阵逆。 a.C/B=C*(inv(B))
(C右除B等于C乘以B的逆) b.A\C=inv(A)*C
(A左除C=A的逆乘以C) 3.fspecial()
:create predefined 2-D filter. h = fspecial(type)h = fspecial('average',hsize)h = fspecial('disk',radius)h = fspecial('gaussian',hsize,sigma)h = fspecial('laplacian',alpha)h = fspecial('log',hsize,sigma)h = fspecial('motion',len,theta)h = fspecial('prewitt')h = fspecial('sobel')
4.imfilter()
:N-D filtering of multidimensional images.
B = imfilter(A,h)B = imfilter(A,h,options,...)
5.imnoise()
p=sqrt(double(p1).^2+double(p2).^2);
1.pca()
:MATLAB自带主成分分析函数。
ims=multibandread(input,[nrows ncols bands],'uint8',offset,interleave,byteorder,{'Band','Direct',[4 3 2]});ims=multibandread(input,[nrows ncols bands],'uint8',offset,interleave,byteorder);imgmul=cat(3,ims(:,:,4),ims(:,:,3),ims(:,:,2)); % 合成三维矩阵imshow(uint8(imgmul))
3.repmat()
转载地址:http://vrwsz.baihongyu.com/