matlab中如何读入文本文件中指定行的一组数据?例如: 读入下列数据: 1,2,3,4

matlab中如何读入文本文件中指定行的一组数据?例如: 读入下列数据: 1,2,3,4,第1张

法均相同的命令及语句
命令及函数名 用途 用法
数组定义相关的
DATA 与数组有关的 相同
READ 与数组有关的 相同
RESTORE 与数组有关的 相同
DIM 与数组有关的 相同
流程控制
IFTHENELSE 选择结构语句 相同
IFTHEN 选择结构语句 相同
WHILEWEND 循环控制 相同
FORTOSTEPNEXT 循环控制 相同
DEF FN 定义函数 相同
GOSUBRETURN 分支到当前程序模块中的子程序 相同
字符串处理
ABS() 返回数的绝对值 相同
ATN() 返回用弧度表示的正切值 相同
COS() 返回弧度的余弦 相同
EXP() 返回e的指定次幂 相同
INT() 返回不大于给定数的最大整数 相同
LOG() 返回一个数值的自然对数 相同
RND() 产生0-1之间的随机数 相同
SGN() 返回数的符号值 相同
SIN() 返回弧度的下弦 相同
SQR() 返回数的平方根 相同
TAN() 返回弧度的正切 相同
ASC() 返回字符串每一个字符的ASCII码 相同
CHR$() 返回指定的ASCII码对应的字符 相同
HEX$() 返回十进制数的十六进制的字符串 相同
LEFT$() 返回从字符串左边开始的的指定数目的字符 相同
LEN() 返回字符的长度 相同
MID$() 返回从字符串指定位置开始的指定数目字符 相同
RIGHT$() 返回从字符串右端开始的指定数目的字符 相同
STR$() 返回把数值数据转换为字符后的字符串 相同
INVERSE 反显字符 相同
VAL() 把一个数字字符转换为相应的数值 相同
输入/输出相关命令
CLS 清除屏幕 相同
INKEY$ 从键盘读入一个字符 相同
INPUT 从键盘读取输入 相同
LOCATE 把文件光标定位到指定的行,列 相同
SPC() 在PRINT语句中跳过指定个数的空格 相同
WRITE 把数据输出到屏幕或文件 相同
图形
CIRCLE 画圆 相同
LINE 画线 相同
BOX 画矩形 相同
DRAW 画点 不同
声音
PLAY 演奏指定的音乐 相同
BEEP 使扬声器发出一个短促的声音 相同
文件
OPEN 打开文件
INPUT# 从顺序文件读取一个字符串 相同
GET 从随机和二进制文件读取数据 相同
PUT 把数据写入随机或二进制文件 相同
LOF 返回随机文件长度 相同
CLOSE 关闭文件 相同
EOF() 当文件指针位于文件结尾时返回-1 相同
其它
TRACE 单步跟踪程序执行 相同
LET 将变量赋值
SWAP 交换两下变量的值 相同
GVBASIC语言知识要点
21文曲星的屏幕特点
每行显示汉字或全角字符: 10 个
每行显示英文或半角字符: 20 个
液晶点阵: 16080
22 GVBASIC中的符号定义
22 GVBASIC中的符号定义与其它BASIC版本完全一样
1数值表达式
% 整型变量
$ 字符串
+ 加法运算符
- 减法运算符
乘法运算符
/ 除法运算符
^ 乘方运算符
2关系运算符
= 等于
> 大于
< 小于
>= 大于或等于
<= 小于或等于
<> 不等于
3逻辑运算符
AND 逻辑与
OR 逻辑或
NOT 逻辑非
4特殊符号
; 控制PRINT语句以紧凑格式输出
, 控制PRINT语句以换行格式输出
: 分隔一行中并联语句
INPUT语句提示符
] GVBASIC命令提示符(表示GVBASIC处于编辑状态并等待用户输入命令)
23 GVBASIC语言中定义了哪几种数据类型
解答: GVBASIC定义了两种数据类型
(1)常规整型数: 范围从-32768到+32767, 通常正号可以省略,类型声明符为%, 例如: A% 就表示变量为整型
(2)实型变量: 范围从-10E+30,10E+30
24 GVBASIC其它规定
变量名最长: 16
最大行号: 9999
25 变量,数组定义
LET 将值赋给变量
SWAP 交换两下变量的值
DIM 定义数组
READ 将DATA语句中的下一个数据项赋给指定的变量
DATA 指定要读入数组的一组数据
RESTORE 指定为读入数据所用的下一个DATA语句
范例:随机产生10个二位整数,放入数组a,从中选出一个最大的和最小的数打印出来(数组的应用)
]10 CLS
]20 DIM A(10)
]30 m=100
]40 n=-100
]50 FOR I=1 TO 10
]60 A(I)=INT(RND90)+10
]70 PRINT A(I);
]80 NEXT I
]90 FOR I=1 TO 10
]100 IF A(I)>N THEN N=A(I)
]110 IF A(I)<M THEN m=A(I)
]120 NEXT I
]130 PRINT "最大数 N=";n,"最小数 M=";m
]140 END
26 流程控制
GVBASIC提供了较常用的几种流程控制语句
GOTO
IFTHEN/GOTOELSE
ONGOTO n1,n2,n3
范例:1编制程序将24小时计时法转成12小时计时法
]10 REM 转换计时法
]20 INPUT HOUR24,MINTUE
]30 IF HOUR24<0 OR HOUR24>23 THEN 60
]40 IF HOUR24<=12 THEN HOUR12=HOUR24: PRINT "现在时间是:";HOUR12;":";MINTUE;"am"
]50 IF HOUR24>12 THEN HOUR12=INT(HOUR24/2): PRINT HOUR12;MINTUE;"pm"
]60 END
27循环结构语句
WHILEWEND 当给定的条件为真时,执行循环语句中的循环体
FORNEXT 根据指定的次数执行循环体
范例1:
打印九九乘法表
10 REM 乘法表
20 FOR A=1 TO 9
30 FOR B=A TO 9
40 PRINT A;"";b;"=";AB,
50 NEXT B
60 NEXT A
70 END
28 过程及函数
DEF FN 定义用户自定义函数
GOSUBRETURN 分运支到当前程序模块中的了例程
ONGOSUB
29 数学运算函数和语句
ABS() 返回数的绝对值
ATN() 返回用弧度表示的反正切值
COS() 返回弧度的余弦
EXP() 返回e的指定次幂
INT() 返回不大于给定数的最大整数
LOG() 返回一个数值的自然对数
RND() 产生0-1之间的随机数
SGN() 返回数的符号值
SIN() 返回弧度的正弦
SQR() 返回数的平方根
TAN() 返回弧度的正切
210 字符串
一,字符串常量
字符是指单个字母,数字或其他特殊符号及文曲星中的图形,字符串是系统允许使用的若干个字符构成的序列,也称为字符串常量一个字符串一般是双引号括起来的一串字符
二 字符串大小的比
在计算机内部(文曲星内部),所有字符都是以ASCII码表示的,比较两下字符的大小,就是比较它们的ASCII码值的大小
三 字符串比较的规律
1同规格的字母比较,按字母的顺序排,后面的大。
2大小写字母的比较,小写字母大于大写字母
3数字字符比较,按数值的大小排,数值大的大
4字母与数字比较,数字(0-9)的代码均小于字母(A-Z)的代码
5空格比数字,标点,字母等常见符号都小
四 字符串处理的函数及语句
GVBASIC语言知识要点:
ASC() 返回字符或字符串第一个字符的ASCII码
CHR$() 返回指定的ASCII码对应的字符
LEFT$() 返回从字符串左边开始的指定数目的字符
LEN() 返回字符串的长度
MID$() 返回从字符串指定位置开始的指定数目字符
RIGHT$() 返回从字符串右端开始的指定数目的字符
STR$() 返回把数值型数据转换为字符型后的字符串
VAL() 把一个数字字符串转换为相应的数值
范例:
输入一串字符,将它的内容按下列的密码规则转换为明码输出
密码: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
明码: F L Q C O S N Z E Y V R X H T B W A J D M I G U P K
其余字符都不变换
例如: 输入: V BVZI VO KILJ UXDN
输出: I LIKE IT VERY MUCH
程序如下
]10 CLS
]20 X$="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
]30 Y$="FLQCOSNZEYVRXHTBWAJDMIGUPK"
]40 INPUT Z$
]50 FOR I=1 TO LEN(Z$) '将该密码从左到右逐个处理
]60 A$=MID$(Z$,I,1) '取出第I个字符放入A$中
]70 FOR J=1 TO 26 ' 寻找密码字符在X$中的位置
]80 IF A$=MID$(X$,J,1) THEN 100
]90 NEXT J
]100 IF A$=MID$(X$,J,1) THEN PRINT MID$(Y$,J,1); ELSE PRINT A$; '若找到,转明输出,则否显示原字符
]110 NEXT I
]120 END
]RUN
如果输入: V BVZI VO KILJ UXDN
输出结果: I LIKE IT VERY MUCH
211简单输入/输出
CLS 清除屏幕
INKEY$ 从键盘读取一个字符
INPUT 从键盘读取输入
LOCATE 把光标定位到指定的行,列
PRINT 从屏幕当前光标位置显示数值,字符串或数据
SPC() 在PRINT语句中跳过指定个数的空格
WRITE 把数据输出到屏幕或文件
范例: 产生一个动态的字符
]10 FOR I=1 TO 10
]20 N=I
]30 LOCATE 3,N
]40 PRINT "GO!"
]50 FOR J=1 TO 100 /空循环起延时作用/
]60 NEXT J
]70 CLS /擦除运动轨迹/
]80 NEXT I
]90 END
RUN /显示从左到右运动GO!/
212 图形
CIRCLE 在屏幕指定位置画圆
DRAW 在屏幕指定位置画点
LINE 画直线或矩形
BOX 画矩形
ELLIPSE 画椭圆
213 声音
BEEP 使扬声器发出一个短促的声音
PLAY 演奏指定的音乐
214 文件
EOF() 当文件指针位于文件结尾时返回-1(真)
INPUT # 从顺序文件中读取数据
OPEN 打开文件
WRITE 把数据写入顺序文件
CLOSE 关闭数据文件
LSET 向缓冲区分配的变量赋值,并做左对齐调整
LOF 返回随机文件长度
GET 从指定文件读取指定记录放入缓冲区
PUT 向指定文件的指定记录写入缓冲区内容
FIELD 指定缓冲区大小分配缓冲区变量
COPY 复制文件
范例:
建立一个数据文件,并用WRITE#语句将5个人的姓名和年龄输出给该文件,然后程序将该文件关闭,再次将它打开用于输入,并把这5个记录读回到程序中,并显示到屏幕上
]10 CLS
]20 OPEN "TESTTXT" FOR OUTPUT AS #1
]30 PRINT "输入5个姓名,年龄"
]40 FOR I=1 TO 5
]50 INPUT NAME$,AGE%
]60 WRITE #1,NAME$,AGE%
]70 NEXT I
]80 CLOSE #1
]90 OPEN "TESTTXT" FOR INPUT AS #1
]100 PRINT "你输入的姓名,年龄如下:"
]110 FOR I=1 TO 5
]120 INPUT #1,NAME$,AGE%
]130 PRINT NAME$,AGE%;
]140 NEXT I
]150 CLOSE #1
]160 END
这里有详细内容:

一维数组输入
在matlab中,基本的运算单元是无需指定维数的数组。一维数组在数学上常称为向量,如下所示,在matlab中要输入数组 a = {1,2,4,9,21,13,20} ,按照下面格式就可以:
>> a = [1,2,4,9,21,13,20]二维数组输入
在matlab中,二维数组可以看作2个一维数组,比如要输入二维数组 a = {{1,2,3},{4,5,6},{7,8,9}} ,在command window(命令窗口)如下所示输入即可:
>> a = [1,2,3;
4,5,6;
7,8,9]
可以看到,输入后command window会输出该二维数组(矩阵),如下图所示(红色箭头即为输出矩阵)。其它数组输入
在上面 *** 作中可以发现,一维数组是二维数组的一个特例,二维数组的第一维可谓“行”,第二维可谓“列”。以此类推,可以输入三维数组、四维数组等。
比如三维数组如下输入:
>> a = {[1,2;3,4],[5,6;7,8]}
如果输入比如 a{1},则会输出第一个二维矩阵,MATLAB(矩阵实验室),全称为Matrix Laboratory,是MathWorks公司推出的用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境的商业数学软件。
MATLAB具有数值分析、数值和符号计算、工程与科学绘图、控制系统的设计与仿真、数字图像处理、数字信号处理、财务与金融工程等功能,为众多科学领域提供了全面的解决方案,代表了当今国际科学计算软件的先进水平。MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

MATLAB基本的使用方法
1 读取图像:用imread函数读取图像文件,文件格式可以是TIFF、JPEG、GIF、BMP、PNG等。比如
2 >> f = imread('chestxrayjpg');
读进来的图像数据被保存在变量f中。尾部的分号用来抑制输出。如果是彩色的,可以用rgb2gray转换成灰度图:
>> f = rgb2gray(f);
然后可以用size函数看图像的大小
>> size(f)
如果f是灰度图像,则可以用下面的命令把这个图像的大小赋给变量M和N
>> [M, N] = size(f);
用whos命令查看变量的属性
>> whos f
3 显示图像:用imshow显示图像
4 imshow(f, G)
其中f是图像矩阵,G是像素的灰度级,G可以省略。比如
>> imshow(f, [100 200])
图像上所有小于等于100的数值都会显示成黑色,所有大于等于200的数值都会显示成白色。pixval命令可以用来查看图像上光标所指位置的像素值。
pixval
例如
>> f = imread('rose_512tif');
>> whos f
>> imshow(f)
如果要同时显示两幅图像,可以用figure命令,比如
>> figure, imshow(g)
用逗号可以分割一行中的多个命令。imshow的第二个参数用一个空的中括号:
>> imshow(h, [])
可以使动态范围比较窄的图像显示更清楚。
5 写图像。用imwrite写图像
6 imwrite(f, 'filename')
文件名必须包括指明格式的扩展名。也可以增加第三个参数,显式指明文件的格式。比如
>> imwrite(f, 'patient10_run1tif', 'tif')
也可以写成
>> imwrite(f, 'patient10_run1tif')
还可以有其他参数,比如jepg图像还有质量参数:
>> imwrite(f, 'filenamejpg', 'quality', q)
q是0到100之间的一个整数。对比不同质量的图像效果。用imfinfo命令可以查看一个图像的格式信息,比如
>> imfinfo bubbles25jpg
可以把图像信息保存到变量中
>> K = imfinfo('bubbles25jpg');
>> image_bytes = KWidth KHeight KBitDepth / 8;
>> compressed_btyes = KFileSize;
>> compression_ratio = image_bytes / compressed_bytes
7 数据类型。MATLAB的数据类型包括:
8 double 双精度浮点
9 uint8 无符号8位整数
10 uint16 无符号16位整数
11 uint32 无符号32位整数
12 int8 有符号8位整数
13 int16 有符号16位整数
14 int32 有符号32位整数
15 single 单精度
16 char 字符
17 logical 逻辑型(二值)
数据类型转换
B = data_class_name(A)
比如
>> C = [14 15]
>> D = uint8(C)
图像类型分为:
Intensity image 灰度图
Binary image 二值图
Indexed image 索引图
RGB image 彩色图
在灰度图中每个像素可以是整型、浮点型或者逻辑型。图像类型的像素类型可以转换
function to from
im2uint8 uint8 logical,uint8,uint16,double
im2uint16 uint16 logical,uint8,uint16,double
mat2gray double double
im2double double logical,uint8,uint16,double
im2bw logical uint8,uint16,double
比如
g = mat2gray(A, [Amin, Amax]);
g = mat2gray(A);
g = im2double(h);
g = im2bw(f, T)
其中A是浮点型的图像,Amin和Amax是浮点数的范围,h和f是任意类型的图像,T是分割的阈值。
18 数组(向量)索引:创建向量(数组):
19 >> v = [1 3 5 7 9 11 13]
用小括号对向量进行索引(取数组中的某个元素):
>> v(2)
转置(将行向量通过转置变成列向量):
>> w = v'
取向量其中的一部分:
>> v(1:3) 第1个到第3个
>> v(2:4)
>> v(3:end) 第3个到最后一个
>> v(1:end)
>> v(:) 全部
>> v(1:2:end) 第1个到最后一个,每次增加2
>> v(end:-2:1) 最后一个到第1个,每次减2
其中end总是表示最后一个。
>> x = linspace(1, 5, 10)
>> v([1 4 5])
linspace函数产生一个范围内的平均分布。
20 矩阵索引:创建矩阵
21 >> A = [1 2 3; 4 5 6; 7 8 9]
取矩阵中的一个元素
>> A(2, 3)
取矩阵中的一行或者一列
>> C3 = A(:, 3)
>> R2 = A(2, :)
取矩阵中某些行某些列
>> T2 = A(1:2, 1:3)
对矩阵中某些元素进行赋值:
>> B = A;
>> B(:, 3) = 0
用end表示最后一行或者最后一列:
>> A(end, end) 最后一行最后一列
>> A(end, end-2) 最后一行倒数第三列
>> A(2:end, end:-2:1) 第2行到最后一行,最后一列到第一列,每次减2


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13042183.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存