-
Notifications
You must be signed in to change notification settings - Fork 2
/
phasetick.m
45 lines (41 loc) · 929 Bytes
/
phasetick.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
function phasetick(a)
%PHASETICK Phase formatted tick labels
% The function labels the tick lines of the axis specified by tickaxis
% using PI-based, replacing the numeric labels in radian.
%
% Syntax:
% PHASETICK(tickaxis) where tickaxis is 'x' or 'y'
%
% Author: F. Beauducel <[email protected]>
% Created: 2024-03-25
at = [a,'Tick'];
axis tight
lim = get(gca,[a,'Lim'])/pi;
d = diff(lim);
m = 10^floor(log10(d));
p = ceil(d/m);
if p <= 2
dd = .25*m;
elseif p <= 4
dd = .5*m;
else
dd = m;
end
x = ceil(lim(1)/dd)*dd:dd:floor(lim(2)/dd)*dd;
set(gca,at,x*pi);
s = cell(size(x));
for n = 1:length(s)
ax = abs(x(n));
switch rem(ax,1)
case 0
s{n} = [num2str(x(n)),'\pi'];
case 1/2
s{n} = [num2str(2*x(n)),'\pi/2'];
case {1/4,3/4}
s{n} = [num2str(4*x(n)),'\pi/4'];
end
end
s = regexprep(s,'1','');
s = regexprep(s,'0\\pi','0');
set(gca,[at,'Label'],s)
axis tight