matlab取出矩阵某行某列

发布时间:2025-01-08 16:48

矩阵式决策: 利用矩阵图评估项目风险与收益 #生活技巧# #团队建设技巧# #团队决策方法#

最新推荐文章于 2023-07-11 11:06:26 发布

weixin_39530838 于 2020-12-28 18:54:53 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

bde6f7178a090f9c6cbdda262d38c7b1.png

用实例介绍Matlab读写文本文件的方法,包括load、dlmread、csvread、importdata、textscan、dlmwrite、csvwrite、save、fprintf函数的用法。

读取文本方法

1. 纯数据:数字、科学计数法

test.txt 文件内容如下:

1 2 3

4 5 6

1,2,3

4,5,6

1,2;3

1e+2 1.32e+1 2e+2

1e+2 1.32e+1 2e+2

推荐使用 load 函数,代码如下,空格、逗号、分号隔开均可,要求数据列数一致。

2. 包含头信息

text.txt 文件内容如下:

head 1

head line 2

1e+2 1.32e+1 2e+2

1e+2 1.32e+1 2e+2

1e+2 1.32e+1 2e+2

使用 importdata、textscan 函数:

% 从第3行开始读取数据

content= importdata('test.txt', ' ', 2);

data1 = content.data;

fid = fopen('test.txt', 'r');

% 从第3行开始读,然后合并

% 如果是空格隔开的,一定不要添加分隔符

cData = textscan(fid, '%f %f %f', 'HeaderLines', 2, 'CollectOutput', 1);

data2 = cData{1}; % 从元胞数组中提取数据

fclose(fid);

如果数据严格对其,即分隔符完全一样,如下都是一个空格分开:

head 1

head line 2

1e+2 1.32e+1 2e+2

1e+2 1.32e+1 2e+2

1e+2 1.32e+1 2e+2

还可以使用 dlmread 函数:

data2 = dlmread('test.txt', ' ', 2, 0);

如果数据严格对其,并用逗号分隔:

head 1

head line 2

1e+2, 1.32e+1, 2e+2

1e+2, 1.32e+1, 2e+2

1e+2, 1.32e+1, 2e+2

还可以使用 csvread 函数:

content= importdata('test.txt', ',', 2);

data1 = content.data;

fid = fopen('test.txt', 'r');

% 这里需要添加分隔符

cData = textscan(fid, '%f %f %f', 'HeaderLines', 2, 'Delimiter', ',', 'CollectOutput', 1);

data2 = cData{1};

fclose(fid);

data2 = dlmread('test.txt', ',', 2, 0);

data3 = csvread('test.txt', 2, 0);

3. 文字和数字穿插

head 1

head line 2

1e+2, 1.32e+1, 2e+2

1e+2, 1.32e+1, 2e+2

1e+2, 1.32e+1, 2e+2

content 1

content 2

1 2 3 4

5 6 7 8

需要用到 textscan 函数,两种思路:(1)指定从某行读,需要打开文件两次;(2)逐行读取,数值部分连续读取,推荐。

fid = fopen('test.txt', 'r');

cData = textscan(fid, '%f %f %f', 'HeaderLines', 2, 'Delimiter', ',', 'CollectOutput', 1);

data1 = cData{1};

fclose(fid);

fid = fopen('test.txt', 'r');

cData = textscan(fid, '%f %f %f %f', 'HeaderLines', 7, 'CollectOutput', 1);

data2 = cData{1};

fclose(fid);

fid = fopen('test.txt','r'); % 以只读方式打开

line1 = fgets(fid); % 读取文件的第1行

line2 = fgets(fid); % 读取文件的第2行

% 从第3行开始读取数据,将读取的相同数据类型的连续元胞连接成一个元胞数组

cData = textscan(fid, '%f %f %f', 'Delimiter', ',', 'CollectOutput', 1);

data3 = cData{1};

line6 = fgets(fid); % 读取文件的第6行

line7 = fgets(fid); % 读取文件的第7行

cData = textscan(fid, '%f %f %f %f', 'Delimiter', ',', 'CollectOutput', 1);

data4 = cData{1};

fclose(fid);

4. 数字不对齐

1 2 3

4 5

6

使用 dlmread 函数,缺少的部分会补零;

data = dlmread('test.txt');

5. 复数矩阵

1+1i, 1+2i

1+1i, 1+2i

使用 dlmread、textscan 函数:

data1 = dlmread('test.txt');

fid = fopen('test.txt', 'r');

A = textscan(fid, '%*f %*s %f %*s','delimiter', ' ', 'CollectOutput', 1);

data2 = A{1};

fclose(fid);

6. 日期形式

2020-4-13, 10:10:10.111 AM

2020-4-13, 10:10:10.111 AM

2020-4-13, 10:10:10.111 AM

使用 textscan 函数:

fid = fopen('test.txt', 'r');

% 用'-,:'作分隔符

A = textscan(fid, '%d %d %d %d %d %f %s','delimiter','-,:','CollectOutput',1);

fclose(fid);

写文件方法

1. 写数字

使用 save、dlmwrite、csvwrite函数:

a = 1000*rand(5);

save('a.txt','a','-ascii');

save('a.txt','a','-ascii','-tabs');

save('a.txt','a','-append','-ascii','-tabs');

dlmwrite('test.txt', a, '-append', 'roffset', 1, 'delimiter', 't', 'precision', '%8.4f');

csvwrite('csvlist.csv', a);

2. 写复数

使用 dlmwrite 函数:

x = [1+1i, 1+2i; 1+1i, 1+2i];

% 用逗号(',')作分隔符,用'rn'作换行符

dlmwrite('test.txt', x, 'delimiter', ',', 'newline', 'pc');

3. 带有头文件的文本

data = [1, 1, 1, 1; 2, 2, 2, 2];

fid=fopen('test.txt','wt');

fprintf(fid,'%sn', 'head info'); % 头信息

fprintf(fid,'%d %10.4f %10.4f %10.4fn', data'); % 写数据部分,注意转置一下

fclose(fid);

% 追加

line1 = [1 2 3 4];

line2 = [1 2 3];

line3 = [1 2];

fid = fopen('test.txt', 'at');

fprintf(fid, '%d %d %d %dn', line1);

fprintf(fid, '%d %d %dn', line2);

fprintf(fid, '%d %dn', line3);

fclose(fid);

【秘籍】

读取数据时,根据不同的数据格式选择最合适的函数;写数据比较自由,万能的方法就用 fprintf 函数。

网址:matlab取出矩阵某行某列 https://www.yuejiaxmz.com/news/view/670896

相关内容

矩阵行列式
MATLAB强化学习二:读取xlsx和txt数据
matlab中for循环的简单使用
MATLAB图像处理(包括图像类型转换)
Matlab
求基础矩阵F方法
若A为n阶方阵,r(A)=r,则矩阵A中存在r个列向量线性无关. 若r...
Matlab数据分析与多项式计算
Matlab的for循环优化
正交矩阵; 实对称矩阵; 为什么实对称矩阵一定可以对角化; AB=0 r(A)+r(B)<=n 证明; 初等矩阵; 初等矩阵的逆矩阵; 矩阵的左除右除;

随便看看