目录
一、如何连续访问或者连续命名变量
a1=[1 2;3 4;5 6];
a2=[2 5;3 7;4 8];
a3=[9 5;8 4;7 3];
a4=[5 2;4 6;3 4];
a = cell(4,1);
for i = 1:4
a{i}=eval(strcat('a',num2str(i)))
end
二、如何画双y轴条形图且将数据显示
x={'中国','英国'};
xx = categorical(x); %定义分类数组
xx = reordercats(xx,x); %调用 reordercats 函数来指定条形的顺序
y = [1015.37 352.81; 5260 6943];
oo=[0,0]; %引入的零数组
yyaxis left %激活左侧
hold on
b1=bar(xx,[y(1,:);oo]); %引入零数组
ax = gca;
ax.YColor='black';
set(b1(1,1),'FaceColor','b');%选择1c(这个颜色
set(b1(1,2),'FaceColor','r');%选择1c(这个颜色
text(1-0.15,y(1,1),num2str(y(1,1)),'HorizontalAlignment','center','VerticalAlignment','bottom','FontSize',25,'FontName','Times New Roman');
text(1+0.15,y(1,2),num2str(y(1,2)),'HorizontalAlignment','center','VerticalAlignment','bottom','FontSize',25,'FontName','Times New Roman');
yyaxis right %激活右侧
hold on
b2=bar(xx,[oo;y(2,:)]); %引入零数组
set(b2(1,1),'FaceColor','b');%选择1c(这个颜色
set(b2(1,2),'FaceColor','r');%选择1c(这个颜色
ylim([1500 8000])
legend([b1(1,2) b2(1,1)],{'SiC相对于IGBT节省金额','HyS相对于IGBT节省金额'}) ; %只显示原始数据的图例
box on
ax = gca;
ax.YColor='black';
text(2-0.15,y(2,1),num2str(y(2,1)),'HorizontalAlignment','center','VerticalAlignment','bottom','FontSize',25,'FontName','Times New Roman');
text(2+0.15,y(2,2),num2str(y(2,2)),'HorizontalAlignment','center','VerticalAlignment','bottom','FontSize',25,'FontName','Times New Roman');
set(gca,'FontSize',25)
三、输出时间
datestr(now,‘yyyy-mm-dd HH:MM:SS’ )
四、同时给多个变量赋值
[x,y,z] = deal(0);
[a,b,c] = deal(1,2,3);
五、表格处理
5.1 表格读取
利用readtable进行表格读取,表格读取之后为table格式,将table转换成数组格式。
file.name = "result_13028.xlsx";
file.para = sheetnames(file.name);
data.raw = readtable(file.name,'Sheet',file.para(1));
data.n = table2array(data.raw(:,1));
data.n = data.n(~isnan(data.n));
5.2 表格保存
fullname = '666.xlsx';
a = table(table_500);
% 4*(i-1)+6:4*i+5-(4-length(para.rawdata500.thermal.RCth.leg(1).S(1).tr.(loss_struct{i})))
str = [ "sdfdsf"];
writematrix("str_you_type",fullname,'Sheet',"thermal",'Range',"A1");
writematrix(str,fullname,'Sheet',"thermal",'Range',"A2");
writetable(a,fullname,'Sheet',"thermal",'Range',"A4",'WriteVariableNames',false);
5.3 TSV数据提取
t = readtable("data.tsv", "FileType","text",'Delimiter', '\t');
六、数据处理
6.1 数据重新排列
利用reshape可以对数据进行重新排列。
a = [1 2 3 4];
b = [5;6;7;8];
c = reshape(a,4,1);
d = reshape(b,1,4);
%c =
% 1
% 2
% 3
% 4
%d = 5 6 7 8
6.2 数据整体重复
将数据重复组成一组有周期的数组。
a = [1 2 3];
b = repmat(a,3,1);%3行1列
% b=
% 1 2 3
% 1 2 3
% 1 2 3
6.3 数据单个元素重复
数据每个元素重复。
a = [0 1 2 3];
b = repelem(a,2);
% b = 0 0 1 1 2 2 3 3
6.4 两组数据对应寻找
在两个数组中找到相同的数据。
a = [6 0 1 2 3 4 5];
b= [5 4 3 2 1 0 6];
[c,a_indx,b_indx] = intersect(a,b,'rows');
%c/a_indx/b_indx = 空的 0×7 double矩阵
[d,a_indx,b_indx] = intersect(a,b);
% d = 0 1 2 3 4 5 6
% a_indx = 2 3 4 5 6 7 1
% b_indx = 6 5 4 3 2 1 7
6.5 重复数据删除并保留一个
一个数组中有多个重复数据,想要保留 一个周期的数据。
a = [1 2 3 4 5];
a = repelem(a,2)
b = unique(a);
%a =
% 1 1 2 2 3 3 4 4 5 5
%b =
% 1 2 3 4 5
6.6 数据排序
数据按照某一列排序。正数代表升序,复数代表降序。
a = [1 2 23 3 23 ;
2 4 54 45 23 ;]'
b = sortrows(a,1);
%b =
% 1 2
% 2 4
% 3 45
% 23 54
% 23 23
6.7 NaN替换成0
将NaN替换为0,将0替换为NaN
x(find(isnan(x)==1)) = 0
6.8 数组限值
给一个数组限幅
x = [1 2 3 4];
x(x>2)=2;