matlab2021版关于csv文件读写的一些方法

Posted Icy Hunter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab2021版关于csv文件读写的一些方法相关的知识,希望对你有一定的参考价值。

首先给出一些演示数据,直接给出来大家看起来都方便
完整代码在最后,有基础的可以直接看代码
下面是data.csv的文件内容,可以看得出里面有文本也有数值。

代码,名称,最新价,涨跌额,涨跌幅,买入,卖出,昨收,今开,最高,最低,成交量,成交额
sh600000,浦发银行,8.75,-0.05,-0.568,8.75,8.76,8.8,8.78,8.8,8.72,28252954.0,247296068.0
sh600004,白云机场,13.9,1.08,8.424,13.9,13.91,12.82,13.18,14.03,13.12,54580226.0,751308612.0
sh600006,东风汽车,6.46,-0.15,-2.269,6.46,6.47,6.61,6.59,6.59,6.43,10572831.0,68746162.0
sh600007,中国国贸,14.11,-0.1,-0.704,14.1,14.13,14.21,14.19,14.29,14.02,1667300.0,23557102.0
sh600008,首创环保,3.35,-0.03,-0.888,3.34,3.35,3.38,3.37,3.37,3.33,39982746.0,133824032.0
sh600009,上海机场,54.39,3.34,6.543,54.39,54.4,51.05,52.0,55.34,52.0,31432123.0,1704492619.0
sh600010,包钢股份,2.5,-0.03,-1.186,2.49,2.5,2.53,2.52,2.52,2.48,247833786.0,619607197.0
sh600011,华能国际,8.68,0.25,2.966,8.66,8.68,8.43,8.33,8.95,8.3,125973765.0,1093612339.0

我这里介绍三种方式来读这个文件
第一种是importdata
(读的时候记得把data.csv放在脚本文件的同一个目录下)

all = importdata('data.csv');
data = all.data  % 获取数值数据
textdata = all.textdata %获取文本数据

运行结果:

data =

1.0e+09 *

列 1 至 5

0.0000   -0.0000   -0.0000    0.0000    0.0000
0.0000    0.0000    0.0000    0.0000    0.0000
0.0000   -0.0000   -0.0000    0.0000    0.0000
0.0000   -0.0000   -0.0000    0.0000    0.0000
0.0000   -0.0000   -0.0000    0.0000    0.0000
0.0000    0.0000    0.0000    0.0000    0.0000
0.0000   -0.0000   -0.0000    0.0000    0.0000
0.0000    0.0000    0.0000    0.0000    0.0000

列 6 至 10

0.0000    0.0000    0.0000    0.0000    0.0283
0.0000    0.0000    0.0000    0.0000    0.0546
0.0000    0.0000    0.0000    0.0000    0.0106
0.0000    0.0000    0.0000    0.0000    0.0017
0.0000    0.0000    0.0000    0.0000    0.0400
0.0000    0.0000    0.0000    0.0000    0.0314
0.0000    0.0000    0.0000    0.0000    0.2478
0.0000    0.0000    0.0000    0.0000    0.1260

列 11

0.2473
0.7513
0.0687
0.0236
0.1338
1.7045
0.6196
1.0936

textdata =

9×13 cell 数组

列 1 至 3

'代码'        '名称'       '最新价' 
'sh600000'    '浦发银行'    0×0 char
'sh600004'    '白云机场'    0×0 char
'sh600006'    '东风汽车'    0×0 char
'sh600007'    '中国国贸'    0×0 char
'sh600008'    '首创环保'    0×0 char
'sh600009'    '上海机场'    0×0 char
'sh600010'    '包钢股份'    0×0 char
'sh600011'    '华能国际'    0×0 char

列 4 至 7

'涨跌额'     '涨跌幅'     '买入'      '卖出'  
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char

列 8 至 11

'昨收'      '今开'      '最高'      '最低'  
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char
0×0 char    0×0 char    0×0 char    0×0 char

列 12 至 13

'成交量'     '成交额' 
0×0 char    0×0 char
0×0 char    0×0 char
0×0 char    0×0 char
0×0 char    0×0 char
0×0 char    0×0 char
0×0 char    0×0 char
0×0 char    0×0 char
0×0 char    0×0 char

我们主要使用的就是数值数据,他会自动将是数值数据的列取出来因此数值数据只有11列,剩下两列明显是非数值的。

第二种方法csvread

data2 = csvread("data.csv", 1, 2)

表示读取的是跳过第一、二列和跳过第一行的数据才开始读取。这种方法好像不太能读文本数据,读了就报错。
运行结果就是和上面读取的数值内容是一样的。

第三种readtable

d = readtable('data.csv')

保存数据
第一种csvwrite

csvwrite("output.csv",data2, 0, 0)

参数分别为 文件名, 数据, 要保存的内容从第几行、列往后开始保存,同样好像不能够保留文本。

第二种writetable

% 官方文档给的示例
LastName = 'Sanchez';'Johnson';'Li';'Diaz';'Brown';
Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T = table(LastName,Age,Smoker,Height,Weight,BloodPressure)
writetable(T,"o.csv")

o.csv打开如下

可见能够保留字符串,列索引都可以看得到。
同样我们可以自定义列索引和行索引

T.Properties.VariableNames = 'a','b','c','d','e','f'
T.Properties.RowNames = 'g','h','i','j','k'

结果如下

完整代码:
(要看哪条的结果记得把分号去掉)

clc, clear
all = importdata('data.csv');
r = readtable("data.csv");
data = all.data;
textdata = all.textdata;
data2 = csvread("data.csv", 1, 2);
d = readtable('data.csv')

csvwrite("output.csv",data2, 0, 0);

LastName = 'Sanchez';'Johnson';'Li';'Diaz';'Brown';
Age = [38;43;38;40;49];
Smoker = logical([1;0;1;0;1]);
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
T = table(LastName,Age,Smoker,Height,Weight,BloodPressure);
T.Properties.VariableNames = 'a','b','c','d','e','f';
T.Properties.RowNames = 'g','h','i','j','k';
writetable(T,"o.csv");

以上是关于matlab2021版关于csv文件读写的一些方法的主要内容,如果未能解决你的问题,请参考以下文章

怎样从matlab中读取csv文件

关于CSV文件的读写问题(特别是有双引号和逗号的情况)

matlab 提取csv格式文件问题

关于matlab向文件写入数据的方法——留着备用

c语言,关于读取csv文件的数据,(一行有四列)显示在屏幕。下面的代码:列数据

数据清洗文件操作--csv txt文件读写excel文件读写数据库文件读写