필터 지우기
필터 지우기

Plot title divided into rows, why?!

조회 수: 3 (최근 30일)
Henry Eriksson
Henry Eriksson 2019년 3월 29일
댓글: Star Strider 2019년 3월 30일
I have attached my code below.
When I run this code, the title to my plots look like this (see attached picture). Why is this? In the code, the array "M_G_gsm" is just an array of strings. This was not previously used to make the title, then I just wrote the title by hand. I believe this problem has to do with the string array, but I cant figure out how. Can anyone suggest a solution? I just want the title to become a row, like normal.
Thank you in advance
Henry
E2M1_G1_all_packagesposition2A.png
clear
clc
material = 1
geometry = 1
if material==1 & geometry == 1
M_G_gsm=["M1","G1"];
gsm=["290gsm"];
positions=['5']
numberofpositions = 5;
numberofpackages=10;
elseif material==1 & geometry == 2
M_G_gsm=["M1","G2"];
gsm=["290gsm"];
positions=['9']
numberofpositions = 9;
numberofpackages=10;
elseif material==2 & geometry == 1
M_G_gsm=["M2","G1"];
gsm=["315gsm"];
positions=['5']
numberofpositions = 5;
numberofpackages=11;
elseif material==3 & geometry == 1
M_G_gsm=["M3","G1"];
gsm=["340gsm"];
positions=['5']
numberofpositions = 5;
numberofpackages=13;
end
positionletter=['A';'B'];
for packagenumber = [1:numberofpackages] %FIRST 4 FOR LOOPS ARE JUST FOR DATA COLLECTION!
for positionnumber = [1:numberofpositions]
for pos=[1:2]
filename=strcat(M_G_gsm(1),'_',M_G_gsm(2),'_','P',num2str(packagenumber),'_',num2str(positionnumber),positionletter(pos),'_lf.csv');
if exist(filename,'file') == 0, continue, end
A = importdata(filename); %Importing the CSV file
package{packagenumber}{positionnumber}{pos} = A.data; %Naming the numerical array
time{packagenumber}{positionnumber}{pos}=package{packagenumber}{positionnumber}{pos}(:,1); %Biotac time vector is separated from package{i}
E_package{packagenumber}{positionnumber}{pos}=package{packagenumber}{positionnumber}{pos}(:,2:20); %Separating the sensors E1 through E19 from package{i}
PDC{packagenumber}{positionnumber}{pos}=package{packagenumber}{positionnumber}{pos}(:,21); %PDC array from CSV-file
globalforce{packagenumber}{positionnumber}{pos}=package{packagenumber}{positionnumber}{pos}(:,24); %Force array from CSV-file
x0=0;
y0=0;
width=800; %Setting height of figures
height=width * (8/11); % height to width ratio is 8:11 .
for i=1:19 %For each sensor indes, 1 through 19
E_norm{packagenumber}{positionnumber}{pos}(:,i)=((4095./E_package{packagenumber}{positionnumber}{pos}(:,i))-1)*10;%Creates an array of bit values from the sensors. Every cell in every column in E_temp is divided by the largest element in E_temp
end
end
end
end
% clear positionnumber pos packagenumber i
%FOLLOWING FOR-LOOPS ARE FOR PLOTTING ONLY
%M1_G1_290, contains 10 packages, 5 positions from A to B
times=(0:0.010:80);
for i=[2,3,5,7,8,9,10,12,13,15];
for pos=[1:2];
filename=strcat(M_G_gsm(1),'_',M_G_gsm(2),'_','P',num2str(packagenumber),'_',num2str(positionnumber),positionletter(pos),'_lf.csv');
figuresdir = strcat('D:\thesis_figures\Sensors_at_all_positions_and_packages\',M_G_gsm(1),'_',M_G_gsm(2),'_',gsm,'_','E',num2str(i),' positions ',positionletter(pos),'\');
mkdir(figuresdir); %The figure folder for each package is created
c=0;
for positionnumber=[1:numberofpositions]
lengths=5000*ones(1,numberofpositions);
impedances_all_max=0.00001*ones(1,numberofpositions);
impedances_all_min=5000*ones(1,numberofpositions);
for packagenumber=[1:numberofpackages]
c=c+1;
filename=strcat(M_G_gsm(1),'_',M_G_gsm(2),'_','P',num2str(packagenumber),'_',num2str(positionnumber),positionletter(pos),'_lf.csv');
if ~exist(filename,'file')
continue
end
lengths(1,packagenumber)=length(E_norm{packagenumber}{positionnumber}{pos}(:,i));
PDC_temp_truncated{packagenumber}{positionnumber}{pos}=PDC{packagenumber}{positionnumber}{pos}(1:min(lengths(1,packagenumber)),1);
[maxValuePDC,maxIndexPCD] = max(PDC_temp_truncated{packagenumber}{positionnumber}{pos});
E_norm_temp=E_norm{packagenumber}{positionnumber}{pos}(:,i);
E_norm_temp_truncated=E_norm_temp(1:min(lengths(1,packagenumber)),1);
fromStartToMax_Esensor{packagenumber}{positionnumber}{pos}=E_norm_temp_truncated(1:maxIndexPCD,1);
findFirstMin{packagenumber}{positionnumber}{pos}(:,i)=min(fromStartToMax_Esensor{packagenumber}{positionnumber}{pos});
dropBeforeMax_Esensor{packagenumber}{positionnumber}{pos}(1,i)=E_norm_temp(1,1) - findFirstMin{packagenumber}{positionnumber}{pos}(:,i);
if pos==1
dropBeforeMax_posA(c,i)=dropBeforeMax_Esensor{packagenumber}{positionnumber}{pos}(1,i);
else
dropBeforeMax_posB(c,i)=dropBeforeMax_Esensor{packagenumber}{positionnumber}{pos}(1,i);
end
impedances_all_min(1,packagenumber)=min(E_norm{packagenumber}{positionnumber}{pos}(:,i)); %Fins maximum
impedances_all_max(1,packagenumber)=max(E_norm{packagenumber}{positionnumber}{pos}(:,i));
end
y_min=min(impedances_all_min)-0.20; %The minimum y-value in the coming plot
y_max=max(impedances_all_max)+0.20; %The maximum y-value in the coming plot
min_length=min(lengths);
common_time=times(1:min_length);
for packagenumber =[1:numberofpackages]
filename=strcat(M_G_gsm(1),'_',M_G_gsm(2),'_','P',num2str(packagenumber),'_',num2str(positionnumber),positionletter(pos),'_lf.csv');
if ~exist(filename,'file'), continue, end
%%%%%%PLOTTING EACH E-SENSOR IMPEDANCE FOR SEVERAL POSITIONS IN ONE PLOT%%%%%%
E_norm_temp=E_norm{packagenumber}{positionnumber}{pos}(:,i);
E_norm_temp_truncated=E_norm_temp(1:min_length,1);
figurename=strcat('E ',num2str(i),M_G_gsm(1),'_',M_G_gsm(2),'_','all_packages ','position ',num2str(positionnumber),positionletter(pos));
outfile=fullfile(figuresdir,strcat(figurename,'.png'));
outfile2=fullfile(figuresdir,strcat(figurename,'.fig'));
f=figure(1);
hold on
legendstr=sprintf('Package %d , pos %d%c',packagenumber,positionnumber,char('A'+ pos-1));
hL(packagenumber,1)=plot(common_time,E_norm_temp_truncated,'displayname',legendstr);
ylabel('Biotac Impedance [k \Omega]');
title(['E',num2str(i),M_G_gsm(1),M_G_gsm(2),gsm,'all packages ','position ',num2str(positionnumber),positionletter(pos)]);
xlabel('Time');
ylim([y_min y_max]);
legend;
end
set(f,'position',[x0,y0,width,height]);
saveas(f,outfile);
saveas(f,outfile2);
clf(f);
end
end
end
tempE2A=dropBeforeMax_posA(:,2);
tempE2B=dropBeforeMax_posB(:,2);
AVG_dropBeforeMax_posA_E2=mean(tempE2A(tempE2A>0));
AVG_dropBeforeMax_posB_E2=mean(tempE2B(tempE2B>0));
tempE12A=dropBeforeMax_posA(:,12);
tempE12B=dropBeforeMax_posB(:,12);
AVG_dropBeforeMax_posA_E12=mean(tempE12A(tempE12A>0));
AVG_dropBeforeMax_posB_E12=mean(tempE12B(tempE12B>0));
%%
for packagenumber =[1:numberofpackages];
for pos=[1:2]
for i=[2,3,5,7,8,9,10,12,13,15]
lengths=5000*ones(1,numberofpositions);
impedances_all_max=0.00001*ones(1,numberofpositions);
impedances_all_min=5000*ones(1,numberofpositions);
for positionnumber=[1:numberofpositions]
filename=strcat(M_G_gsm(1),'_',M_G_gsm(2),'_','P',num2str(packagenumber),'_',num2str(positionnumber),positionletter(pos),'_lf.csv');
if ~exist(filename,'file'), continue, end
lengths(1,positionnumber)=length(E_norm{packagenumber}{positionnumber}{pos}(:,i));
impedances_all_min(1,positionnumber)=min(E_norm{packagenumber}{positionnumber}{pos}(:,i)); %Fins maximum
impedances_all_max(1,positionnumber)=max(E_norm{packagenumber}{positionnumber}{pos}(:,i));
end
y_min=min(impedances_all_min)-0.20; %The minimum y-value in the coming plot
y_max=max(impedances_all_max)+0.20; %The maximum y-value in the coming plot
min_length=min(lengths);
common_time=times(1:min_length);
for positionnumber=[1:numberofpositions]
filename=strcat(M_G_gsm(1),'_',M_G_gsm(2),'_','P',num2str(packagenumber),'_',num2str(positionnumber),positionletter(pos),'_lf.csv');
if ~exist(filename,'file'), continue, end
figuresdir2 = strcat('D:\thesis_figures\PositionComparison\',M_G_gsm(1),'_',M_G_gsm(2),'_',gsm,'_','P',num2str(packagenumber),'_positions 1-',positions,'_',positionletter(pos),'\');
mkdir(figuresdir2); %The figure folder for each package is created
%addpath(figuresdir); %The figure folder for each package is added to the path so that MATLAB can actually put files in there
%%%%%%PLOTTING EACH E-SENSOR IMPEDANCE FOR SEVERAL POSITIONS IN ONE PLOT%%%%%%
E_norm_temp=E_norm{packagenumber}{positionnumber}{pos}(:,i);
E_norm_temp_truncated=E_norm_temp(1:min_length,1);
figurename2=strcat('E ',num2str(i),M_G_gsm(1),'_',M_G_gsm(2),'_','P',num2str(packagenumber),' positions 1-',positions,positionletter(pos));
outfile=fullfile(figuresdir2,strcat(figurename2,'.png'));
outfile2=fullfile(figuresdir2,strcat(figurename2,'.fig'));
f=figure(2);
hold on
legendstr=sprintf('Position %d%c',positionnumber,char('A'+ pos-1));
hL(positionnumber,1)=plot(common_time,E_norm_temp_truncated,'displayname',legendstr);
%plot(common_time,E_norm_temp_truncated);
%Plots all the impedance curves for the same sensor along different positions
ylabel('Biotac Impedance [k \Omega]');
title(['E',num2str(i),'-',M_G_gsm(1),'-',M_G_gsm(2),'-',gsm,'-','P',num2str(packagenumber),'_ ','positions 1-',positions,' ',positionletter(pos)]);
xlabel('Time');
ylim([y_min y_max]);
legend;
end
set(f,'position',[x0,y0,width,height]);
saveas(f,outfile);
saveas(f,outfile2);
clf(f);
end
end
end

채택된 답변

Star Strider
Star Strider 2019년 3월 29일
It is probably because your concatenation is having unforeseen effects.
Try this instead:
title(sprintf('E%d %s %s %s all packages position %d%s', i, M_G_gsm(1), M_G_gsm(2), gsm, positionnumber,positionletter(pos)))
Make any necessary changes to get the result you want. When it works the way you want it to, make similar changes to your other title calls.
  댓글 수: 2
Henry Eriksson
Henry Eriksson 2019년 3월 29일
This worked wonders, THANK YOU! :) Im learning so much from this forum, its great!
Star Strider
Star Strider 2019년 3월 30일
As always, my pleasure!
That’s why we’re here!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 2-D and 3-D Plots에 대해 자세히 알아보기

제품


릴리스

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by