matlab 编程
一、基础语法
x = [1 2 ; 3 4]
1.1 读文件
load a.txt
1.2 读矩阵
1.2.1 读第一行
a(1,:)
1.2.2 读第一列
a(;,1)
1.2.3 按列排成一列
a(😃
1.2.4 行列变换
- 将矩阵A变成m行n列,原来的矩阵和新的矩阵都是按列优先重新排列
reshape(A,m,n)
- 将矩阵A按行排列成m行n列新的举阵
b = reshape(A.‘,n,m),注意这里n,m顺序
c = b.’
1.2.5 取某行或者某列
-
取某几行
b = a([1 3]😅 -
取某几列
b = a(:,[1 3])
1.2.6 过滤数据
1.2.7 矩阵按行取为一列
- 先转置再取
b = a.’
b(😃
1.3 简单语法
1.3.1 遍历矩阵
[x,y] = size(a)
function [outputArg1] = change(a,b)
%CHANGE 此处显示有关此函数的摘要
% 此处显示详细说明
[x,y] = size(a);
for i = 1:x
for k = 1:y
b(i,k) = a(i,k) * 2 -1;
end
end
outputArg1 = b;
end
1.4 代码格式调整
ctrl + i
1.5 数学常用
mm=minmax(x) %求数据中的最小数和最大数
mu=mean(x),sigma=std(x) %均值和标准差
1.6 矩阵符号
*表示举证运算,.*表示矩阵中元素的运算
1.7 取矩阵行数和列数
n=size(data,2); %求矩阵的列数,即观测时刻的个数
二、代码
2.1 从xls读取数据
num = xlsread('mytest.xls', 1)
2.2 缺失值填充
三、建模用
3.1 特征值
eig(A)
四、画图
4.1 画图
function [outputArg1,outputArg2] = draw()
data1 = xlsread("./1/ceemdan.xlsx");
data1 = data1(2:10366,2);
disp(size(data1))
data2 = xlsread("./1/iceemdan重构结果.xls");
data2 = data2(2:10366,2);
data3 = xlsread("./1/原始数据.xlsx");
disp(size(data3))
data3 = data3(1:10365);
x = (1:1:10365);
subplot(2,1,1);
plot(x,data1,Color='red',LineStyle='--');
xlabel('数值')
ylabel('y值')
grid on
title('ceemdan和原始数据',Color='red')
hold on
plot(x,data3,Color='blue');
hold off
subplot(2,1,2);
plot(x,data2,Color='red');
hold on
grid on
plot(x,data3,Color='blue');
xlabel('数值')
ylabel('y值')
title('iceemdan和原始数据',Color='red')
hold off
%DRAW 此处显示有关此函数的摘要
% 此处显示详细说明
end
legend([h1,h2,h3],'name1',name2','name3')
4.1.1 标记
4.1.2 x轴标记
set(gca,'xtick',[1:1:5]);
set(gca,'xticklabel',{'文献[31]','文献[32]','文献[33]','文献[34]','本文方案'});
4.2 按照srcdata的格式反标准化desdata
- 注意标准化要保持行数一致
function [middata realdata] = ownmapminmax(srcdata,desdata)
%准备按列标准化
a = srcdata';
[data,rule] = mapminmax(a,0,1);
middata = data';
redata = mapminmax('reverse',desdata,rule);
realdata = redata';