1、求取曲线的斜率和切线
a = [47 21; 46 20; 45 19; 44 19;43 18; 42 19;41 20;42 21;43 22].';
sp = spline(1:size(a,2),a);
dsp = fnder(sp);
d = fnval(dsp, 5);
k = d(2)/d(1);
ai = fnval(sp, linspace(1, size(a, 2)));
plot(a(1,:), a(2,:),'r+')
line(ai(1,:), ai(2,:))
line(a(1,5)+[-5 5],a(2,5)+k*[-5 5],'color','g')
2、给图表添加名字
legend('Recovery','Original')%给图表添加名字
pr=minmax(p);%计算每一行的数据范围
利用字符串建立表达式后,再用eval 命令执行它,可以使程序设计更加灵活。
但是注意表达式一定要是字符串。其命令格式为:
eval(’字符串’)
例 先定义字符串t 为平方根运算,再用eval 求出1 到10 的平方根。
clear,clc
t='sqrt(i)';
for i=1:10
s(i)={char(['The square root of ', int2str(i), ' is ',...
num2str(eval(t))])};
%上面大括号{}代表建立数组
end
s(:)
例 如果要输入几十个甚至上百个文件,用手工操作十分繁琐,然而灵活运用
eval 函数可以自动完成这一工作。假设数据文件名从data1.dat~data10.dat,放
在D:\matlab\chp 目录下,操作如下:
for i=1:10
eval(['load d:\matlab\chp\data',int2str(i),'.dat'])
end
3、利用循环打开一个文件夹的所有文件
filename1=ls('D:\c盘\毕业论文\数据\2nd_test');%提取文件名,每次必须将文件夹名写入。
cd('D:\c盘\毕业论文\数据\2nd_test')%跳转到要处理的数据所在文件夹
filename=cellstr(filename1); %把细胞数组转化为字符串
filename(1:2)=[]; %删除filename中的...文件名,不知道哪里来的??
num=length(filename); %计算文件个数
j=800; %选择第800组数据
B=filename(j); %获取文件名
C=cell2mat(B); %细胞数组转化为字符串
data1= load(C); %加载文件夹所对应的数据
第四步输入corrcoef(a),可以求a矩阵的相关系数,如果a矩阵是个多维矩阵,可以通过corrcoef(a(:,1),a(:,2))求每一列的相关系数,如下图所示:
4、Arma相关代码
y=iddata(x);%将数据转化为ARMAX能识别的类型。
5、可以利用通过直接调用.m函数进行输入数据。
[FileName,PathName] = uigetfile('*.txt','Select the Txt file');
cd(PathName);
data = load(FileName);
6、求取矩阵X中列的个数;
size(X, 2)
7、对数据进行等分
%%此程序为将行/列矩阵分成20等分
y=ones(1,3401);
x=floor(length(y)/20);
y=y(1:(x*20));
b = reshape(y,20,x);
8、用if语句代替for语句,加速执行
对于那种有for语句的代码,构建了一个函数,可以通过内部调用函数进行执行,可以提高处理的速度。递归提供好的解决方案。
9、求解陀螺之间的相关系数corrcoef
data=[data1 data2 data3];
corrcoef(data) %求解三个陀螺数据data1和data2和data3的相关系数,用于求解状态变量矩阵Q和Q‘
10、matlab绘图时快速添加等间隔的坐标
例如:
plot(1:0.8:2000, 0, 'k');%主要用于控制横坐标的绘制。
结果如上图所示。
11、图片保存技巧
- 将其保存为tiff格式的矢量图,这样放大以后不会失真。
- 设置坐标轴上下限:axis([xmin,xmax,ymin,ymax]);分别是x,y轴的上下限;
12、对离散序列进行积分
Trapz:梯形数值积分
For example
X=rand(1,1000) ;
T=[1:1000]*(1/1000);
Trapz(T,X) ;
-
13、循环读取数据
- 方法1:
clc
clear
close all
%% 获取和跳转到当前m文件的所在文件夹
p1 = mfilename('fullpath');
i=strfind(p1,'\');
p1=p1(1:i(end));
cd(p1)
%% 开始读取文件
location='如何利用matlab循环读取文件夹中的文件/';
temp1 = dir([location, '*.txt']);
cd('如何利用matlab循环读取文件夹中的文件')
N=length(temp1);
for i=1:N
data=load(temp1(i).name);
end
-
- 方法二:
clc
clear
close all
%% 获取和跳转到当前m文件的所在文件夹
p1 = mfilename('fullpath');
i=strfind(p1,'\');
p1=p1(1:i(end));
cd(p1)
%% 开始读取文件
file_location=[p1,'如何利用matlab循环读取文件夹中的文件'];%注意每次修改文件名
filename1=ls(file_location); %提取文件名
cd(file_location); %跳转到需要读取的文件夹
filename=cellstr(filename1); %把细胞数组转换为字符串
filename(1:2)=[];
num=length(filename); %计算文件个数
for i=1:num
data=load(filename{i});
end
14、获取和跳转到当前m文件的所在文件夹
p1 = mfilename('fullpath');
i=strfind(p1,'\');
p1=p1(1:i(end));
cd(p1)
15、绘制幅频图
mag1=abs(fft(fhat,N))*2/N;%对信号fhat进行快速傅里叶变换。
figure
plot(fv(1:N/2),mag1(1:N/2));
16、读取数据中含有空的文件数据
fid=fopen('C:\Users\pgl\Desktop\matab学习\读取含有空的数据\data.txt','r');
[f,count]=fscanf(fid,'%f %f');%从左到右,从上到下读取数据,对于数据中间的空白位置,自动跳过,返回的f为数据,count为数据的个数
fclose(fid);
xlswrite('new.xls',f);
17、对具有编号的变量进行赋值
data_s是种N行n列的数据,利用n个变量分别为gyro_1…gyro_n的数据。
for i=1:n
eval(['gyro','_',num2str(i), ' =data_s;']);
end
18、将数据保存成txt格式
save raw_data.txt -ascii data
19、matlab离散数据积分
有两个序列x,y,则x,y的离散积分为(梯形法计算):
T=sum(diff(x).*(y(1:end-1)+y(2:end))/2)
20、Matlab求解矩阵指数函数,——expm
syms t b s ss;
expm(([0 1 0;0 0 1;0 0 -b].*t))
21、一个小图嵌入另bai外一个大图中,matlab举例。程序如du下。
t=0:.1:2*pi; plot(t,sin(t),'g'); xlim([0,2*pi]); xlabel('x')ylabel('y')axes('position',[0.55,0.55,0.3,0.3]); %关键在这句!所画的bai小图duplot(t,cos(t)); xlabel('t')ylabel('y')xlim([0,2*pi]);%设置横坐标范围
22、Matlab读取dat文件,以及读取一般文件
fileID = fopen('C:\Users\pgl\Desktop\数据采集相关资料\采集数据\SAVE2020_7_8_11-27-35.DAT');%注意修改路径
A= fread(fileID);
23、如何将数据进行列排序,将任何矩阵进行列排序
AA = [1 3 4 5 6]
AA(:)的结果为:
1
3
4
5
6
AAA = [1 3 4;5 6 7]
AAA(:)的结果为
1
5
2
6
3
7
24、读取带汉字的文档
fid = fopen('所有人.txt','r','n','UTF-8');
t = 0;
while 1
t = t+1;
tline = fgetl(fid);
if ~ischar(tline)
break
end
disp(tline)
allPeaple{t}=tline;
end
fclose(fid);
25、判断两个细胞数组是否相等(if语句中的判断)
isequal(partPeaple(i),allPeaple(j))
26、simulink library browser 设置字体大小
按Ctrl 加 +可以放大字体,按Ctrl 加 -可以缩小字体。alt加1恢复原字体。
27、利用matlab生成.mif文件
clc
clear
close all
t = [0:0.1:360];%输入范围0到90°,步长0.1°
x = pi*t/180;
sin_val = sin(x);
fid = fopen('C:\Users\pgl\Desktop\sine.mif','wt');
fprintf(fid,'width=14;\n');
fprintf(fid,'depth=1024;\n');
fprintf(fid,'address_radix=uns;\n');
fprintf(fid,'data_radix=dec;\n');
fprintf(fid,'content begin;\n');
for jresult = 1:1024
i = jresult-1;
k = round(sin_val(jresult)*16384);
if(k==16384)
k = 16384;
end
fprintf(fid,'%d:%d;\n',i,k);
end
fprintf(fid,'end;\n');
fclose(fid);
plot(sin_val);