Matlab

Matlab读取带有地理信息的图像

目前需要读取遥感影像并对像元值进行重新计算后再输出图像。

代码如下:

[A, R]= geotiffread('pathname:\ filename')      %得到文件的像元值矩阵A和地理信息R

B= A.* 0.0001                                               %将A进行处理,得到所需要的值

geotiffwrite('pathname:\ newfilename', B, R)   %重新输出图像

但是系统显示图片上的错误。

我看到geotiffwrite参考页里面的syntax第一行就是这么写的:geotiffwrite(filename,A,R)。不知道错在哪。


geotiffread

Read GeoTIFF file

Syntax

[A,R] = geotiffread(filename)

[X,cmap,R] = geotiffread(filename)

[A,refmat,bbox] = geotiffread(filename)

[X,cmap,refmat,bbox] = geotiffread(filename)

[___] = geotiffread(filename,idx)

[___] = geotiffread(url,___)

[A,R] = geotiffread(filename) reads a georeferenced grayscale, RGB, or multispectral image or data grid from the GeoTIFF file specified by filename into A and creates a spatial referencing object, R.

MATLAB 遥感影像的读写操作,带空间坐标信息!

filepath=''E:\Sciencetific Work\北洛河_状头.tif';'

[Data, R] = geotiffread(filepath);   %读取带有空间信息的地理数据,返回数据,和地理栅格空间参考信息spatialref.GeoRasterReference


info = geotiffinfo('shanghai_roi_WGS2.tif');   %geotif的信息


geotiffwrite('shanghai_roi_WGS5.tif',Y,R, 'GeoKeyDirectoryTag',

info.GeoTIFFTags.GeoKeyDirectoryTag);  %写出带有地理信息的geotif文件


MATLAB中使用Inf-Inf infinite分别代表正无穷量和负无穷量,NaN表示非数值量 Not a Number

Matlab中提示:Maximum recursion

limit of 500 reached. Warning:Function tic has the same name as MATLAB builtin. We suggest you rename the function to avoid a potential name conflict.

解决方法:You accidentally named one of your own files tic.m 重命名即可


Matlab中读取图片灰度值:

imread函数:Read image from graphics file

example:  I=imread(‘C:\Users\Administrators\Desktop\beforeclass’);

         D=rgb2gray(I);  将彩色图像转换为灰度图像

         D包含的就是灰度值


imcrop函数:Crop Image 裁剪图像

I=imread('图像名字(带扩展名及路径)');%首先读入一幅待裁剪的图像

I2=imcrop(I,[a b c d]);%利用裁剪函数裁剪图像,其中,(a,b)表示裁剪后左上角像素在原图像中的位置;c表示裁剪后图像的宽,d表示裁剪后图像的高

关于矩形区域[Xmin Ymin Width Height],Xmin是横向第Xmin个像素,Ymin是纵向第Ymin个像素;


imhist函数:显示区域的像素值和灰度值的关系

功能:显示图像的直方图。

输入数据类型可以是无符号8位、16位、有符号16位、单精浮点、字符型、逻辑型等数据。

用法:  

imhist(I,n)  计算和显示图像I的直方图,n为指定的灰度级数目,默认为256。如果I是二值图像,那么n仅有两个值。

imhist(X,map)  计算和显示索引图像x的直方图,map为调色板。

[counts,x]= imhist(...)  返回直方图数据向量counts或相应的色彩值向量x。

举例:

        I=imread('rice.tif')

        imshow(I)

        figure,imhist(I)


imhist只能对灰度图像画直方图,所以那样直接画是不行的,我给你改了一下,你再试试

L=imread('lily.tif');

L=rgb2gray(L);

subplot(1,2,1);

imhist(L);


This example illustrates how to use impixel to get pixel values.

   1.  Display an image.

      imshow canoe.tif

   2. Call impixel. When called with no input arguments, impixel associates itself with the image in the current axes.

      vals = impixel

   3. Select the points you

want to examine in the image by clicking the mouse. impixel places a star at

each point you select.

   4. When you are finished selecting points, press Return. impixel returns the pixel values in an n-by-3 array, where n is the number of points you selected. The stars used to indicate selected points disappear from the image.

      pixel_values =

      0.1294   0.1294    0.1294

      0.5176        0         0

      0.7765   0.6118    0.4196


1、使用imcrop做图像剪切,或用矩形块提取图像块区域;

2、可以使用pixval on(低版本),或impixelinfo;


clc; clear all; close all;

figure;

imshow('rice.png');

impixelinfo


3、使用Figure窗口的“Data cursor”图标来查看;

4、使用imview来查看;


clc; clear all; close all;

imview('rice.png');



strcmp:Compare strings withcase sensitivity

C/C++函数,比较两个字符串

设这两个字符串为str1,str2,

若str1==str2,则返回零;

若str1<str2,则返回负数

若str1>str2,则返回正数。

matlab中函数,strcmp(s1,s2) 判断两个字符串s1和s2是否相同,相同返回true ,不同返回false

strcat 即 Strings Catenate,横向连接字符串

语法

combinedStr= strcat(s1,s2, ...,sN)

描述

数组s1,s2,...,sN水平地连接成单个字符串,并保存于变量combinedStr中。如果任一参数是元胞数组,那么结果combinedStr 是一个元胞数组,否则,combinedStr是一个字符数组。


fread函数可从文件中读取二进制数据

语法:

A = fread(fid, count)

A = fread(fid, count, precision)

其中fid为指针所指文件中的当前位置,count指读取的数据个数, precision表示以什么格式的数据类型读取数据。


fclose(fid); closes an open file. fileID

is an integer file identifier obtained from fopen


matlab中这两个字符串查找的函数findstr(),

strfind()表明上看起来用法相似,效果也相似。一.

findstr(s1,s2)--在较长的字符串中查找较短的字符串出现的次数,并返回其位置,因此无论s1,s2哪个为长字符串,位置在前在后都没有关系。例:

s = 'Find the starting indices of the shorter string.';

findstr(s, 'the')

ans = 6 30

findstr('the', s)

ans = 6 30

二. strfind(s1,s2)--or strfind(s1,pattern),因此其意思在s1中搜索pattern。

例:

S = 'Find the starting indices of the pattern string';

strfind(S, 'in')

ans = 2 15 19 45

strfind(S, 'In')

ans = []

注意,第一个函数findstr函数中,不能识别元胞数组,该函数只能用于字符串中。而第二个函数strfind中,S可以是元胞数组格式的字符串。通过cell2mat()可以把cell结构转成数据,findstr(),strfind()函数只能对一维字符串数据进行操作,若是二维字符串则得使用别的函数。


在matlab中,无论是内建函数还是工具箱函数,2很常见, 这可能是因为2英文two和to发音相同。而2写起来也比较简单。 所以很多转换类函数都用2来命名而非to。

比如string to number, 不是命名为strTonum而是str2num。


Convert string to number


Matlab中读取txt文件

textread函数:[ID,X,Y,DEPTH]=textread(‘C:\Users\Administrator\Desktop\robertisland1.txt’,’%d%f %f %f’,’headerlines’,1);

headerlines表示开头跳过几行(有的文件开头有说明文字)

如何将MATLAB运行结果写入txt文件

a = [1,2,3,4,5,6,7,8,9];

fp = fopen('D:\ztq.txt','wt');

for i =1 : 9

   fprintf(fp, '%d', a(i));

end

fclose(fp);

将数组a导入到D盘中的ztq.txt中。


矩阵的合并:

C=[A B] 在水平方向上合并矩阵A和B

C=[A;B] 在竖直方向上合并A和B


matlab中生成斐波那契数列:

function a=fib(n)

%

生成长度为n的斐波那契数列

if n==1

a=1;

elseif n==2

a=[1 1];

else

b=fib(n-1);

a=[b,b(end-1)+b(end)];

end

例子

fib(10)

ans =

     1    1     2     3    5     8    13   21    34    55


Matlab中判断一个值发生变化

比如判断的变量为X。循环前设两个变量,VarA=0和VarB。在循环中:VarB=VarA,VarA=X(这两句顺序很重要),然后用if语句判断VarA是否等于VarB。如果相等说明X和上一个X相同。

MATLAB显示输出数据主要有三种方式,一种是直接在命令行输入数据项并且不加“;”符号,另外两种是利用disp函数和fprintf函数实现 总的来说,使用fprintf最为灵活方便,可以输出任何格式

Matlab矩阵分割

索引矩阵的一种特殊形式,不仅可以获得某个元素,也可获得某一行或某一列

I = A(i : j, m : n) %输出i到j行的m到n列

B1=Band(1:1000000;:)


Matlab中把1-100这100个整数排成一个矩阵:

x=1:100;

X=reshape(x,m,n);%m

和n分别为要生成矩阵的行数和列数

或者通过linspace函数创建一维数组

y = linspace(1,100)


&&和||是短路版本的逻辑与和逻辑或,称为short-circuit运算符。短路逻辑运算符的两边必须是逻辑标量值。比如单个逻辑变量,逻辑表达式都可以。


Matlab文件中出现asv格式文件

在MATLAB中编辑某个文件时,如果较长时间(系统默认是5分钟,可自行修改)没有对已经变动的文件进行保存,那么系统会自动保存,这就是asv文件,即automatically saved file或autosave的意思,只是备份文件。用记事本打开,和.m文件内容相同。

Matlab读取txt文件行数

越是底层的函数效率是越高的,只是使用不方便而已。MATLAB有一个fread函数,不过这是默认处理的是二进制文件,不过没有关系,文本文件只是一个编码而已,我们还是可以使用fread进行读取的。

tic;

fid=fopen('data.csv','rt');

row=0;

while ~foef(fid)

        row=row+sum(fread(fid,'*char')==char(10)); 

    %计算其中的回车个数,其中10是回车的ASCII编码

    %'*char'表示每次读取一个字符,*表示输出也是字符

    %放心fread现在已经可以自动识别中文了,万一还是识别不了,

    % 请在fopen中指定文件编码格式,比如gbk

end;

fclose(fid);

row;

toc;


matlab输出矩阵

如矩阵a  

a 不加分号即输出

disp(a) 即输出

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,681评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,710评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,623评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,202评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,232评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,368评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,795评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,461评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,647评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,476评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,525评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,226评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,785评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,857评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,090评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,647评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,215评论 2 341

推荐阅读更多精彩内容