关于使用MATLAB处理数据的三个问题

关于使用MATLAB处理数据的三个问题

1. 批量保存和载入多个文件

仿真时,通常会通过改变某一自变量的值来研究该自变量对因变量的影响规律。在这种情况下,保存数据时可以保存成有规律的名字,以便将来使用。

按规律保存数据的方法:

假设计算结果此时存在矩阵B中,即

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

此时想要将矩阵B的每一行分别存在文件“i-data.dat”(后缀名可以更改)中,实现方法:

1
2
3
4
5
for i = 1 : 1 : 3
chr = [num2str(i), '-data.dat'];
b = B(i,:);
save(chr,'b');
end
  • 注意:实际使用时矩阵B是不必出现的。

    这种方法可以实现对数据的动态批量保存。

2. 归一化处理

处理数据时会遇到需要将一组数据映射到某一区间的情况。比如需要归一化处理。事实上,“归一化”的定义很多,一种定义如下:

归一化:把数据变成(0,1)或者(-1,1)之间的数。

给出将向量x映射到任意区间[ymin,ymax]的方法:

1
2
3
4
5
6
7
8
9
10
11
12
function y = normalization(x,ymin,ymax)
% NORMALIZATION 将数据x映射到任意区间[ymin,ymax]范围的方法
% 输入参数x:需要被映射的数据
% 输入参数ymin:映射区间[ymin,ymax]的下限
% 输入参数ymax:映射区间[ymin,ymax]的上限
% 输出参数y:映射后的数据

xmax = max(x); % 计算最大值
xmin = min(x); % 计算最小值

y = (ymax - ymin) * (x - xmin) / (xmax - xmin) + ymin;
end

3. 获得一个数的量级

获得某个数的量级的方法:

1
n = fix(log10(abs(a)));

其中,abs():保证数值为正,取对数时自变量大于0;
log10():取常用对数是获取数值量级的核心;
fix():向零方向取整,得到正确的量级

闭门即是深山,读书随处净土。

-------------本文结束感谢您的阅读-------------