MATLAB3-2数据存储-台大郭彦甫

目录

[File access文件访问](#File access文件访问)

[save() load()](#save() load())

[Excel file reading:xlsread()](#Excel file reading:xlsread())

exercise

既要string也要numeric

如何把这俩同时导出到sheet2

[low-level file input/output](#low-level file input/output)

function

其中%5.3代表什么?

读取文件


File access文件访问

save() load()

如果想单独存储一个:save mydatal.mat a(这个是只存储a

Excel file reading:xlsread()

读入excel

写入excel:计算mean平均值,并导入到excel中,并加入标题Mean

Matlab 复制代码
clc,clear all;
%% 读excel
Score = xlsread('04Score.xlsx');
Score = xlsread('04Score.xlsx','B2:D4');
%写入excel
M = mean(Score')';
xlswrite('04Score.xlsx',M,1,'E2:E4');%1是sheet1
%标题
xlswrite('04Score.xlsx',{'Mean'},1,'E1');

最终excel增加了一列:

exercise

计算标准差,并导入excel中,代码如下:

Matlab 复制代码
%% 标准差
Std = std(Score')';
xlswrite('04Score.xlsx',Std,1,'F2:F4');
xlswrite('04Score.xlsx',{'Std'},1,'F1')

结果:

既要string也要numeric

Matlab 复制代码
[score header] = xlsread('04Score.xlsx')

如何把这俩同时导出到sheet2

Matlab 复制代码
clc,clear all;
%% 读excel
Score = xlsread('04Score.xlsx');
%写入excel
M = mean(Score')';
xlswrite('04Score.xlsx',M,1,'E2:E4');%1是sheet1
% %标题
xlswrite('04Score.xlsx',{'Mean'},1,'E1');
% %% 标准差
Std = std(Score')';
xlswrite('04Score.xlsx',Std,1,'F2:F4');
xlswrite('04Score.xlsx',{'Std'},1,'F1')
[score header] = xlsread('04Score.xlsx')
% 导出到sheet2
a = header
b = num2cell(score)
xlswrite("04Score.xlsx",a,2,'A1')
xlswrite("04Score.xlsx",b,2,'B2:F4')

结果:

low-level file input/output

需要一个fid找到文件,并有一个能够移动的pointer

function

fopen

例如:将sine函数写入A文件中:

1.生成 x,y

2.打开文档

3.将x,y写入文档

4.关闭文档

Matlab 复制代码
%1.generate xy
%2.open a file
%3. write xy into the file
%4.close the file
%如果不关闭file,其他file没办法打开
x = 0:pi/10:pi;y = sin(x);
fid = fopen('sinx.txt','w');
for i=1:11
    fprintf(fid,'%5.3f %8.4f\n',x(i),y(i));
end
fclose(fid);
type sinx.txt

结果:

其中%5.3代表什么?

总共数值是5个,其中3个是小数

读取文件

现在有一个文档asciiData:

代码读取:

Matlab 复制代码
%% 读取文件
clc,clear all;
fid = fopen('asciiData.txt','r');
i = 1;
while ~feof(fid)
    name(i,:) = fscanf(fid,'%5c',1);
    year(i) = fscanf(fid,'%d',1);
    no1(i) = fscanf(fid,'%d',1);
    no2(i) = fscanf(fid,'%d',1);
    no3(i) = fscanf(fid,'%g',1);
    no4(i) = fscanf(fid,'%g\n',1);
    i = i+1;
end
fclose(fid)

结果:工作区得到各个值

相关推荐
云手机掌柜39 分钟前
技术深度解析:指纹云手机如何通过设备指纹隔离技术重塑多账号安全管理
大数据·服务器·安全·智能手机·矩阵·云计算
长路归期无望2 小时前
C语言小白实现多功能计算器的艰难历程
c语言·开发语言·数据结构·笔记·学习·算法
是大强2 小时前
stm32摇杆adc数据分析
开发语言
蓝莓味的口香糖3 小时前
【JS】什么是单例模式
开发语言·javascript·单例模式
linux kernel3 小时前
第二十三讲:特殊类和类型转换
开发语言·c++
笨蛋少年派4 小时前
JAVA基础语法
java·开发语言
渡我白衣4 小时前
深入剖析:boost::intrusive_ptr 与 std::shared_ptr 的性能边界和实现哲学
开发语言·c++·spring
爱吃小胖橘4 小时前
Lua语法
开发语言·unity·lua
怀旧,4 小时前
【C++】26. 智能指针
开发语言·c++·算法
Aevget4 小时前
PHP智能开发工具PhpStorm v2025.2全新上线——支持PHPUnit 12等
开发语言·ide·php·phpstorm