记录自己常用到的一些功能,方便以后查找,持续更新…
矩阵可视化,空值不显示颜色
mat = load(data_path);
h=imagesc(mat);%矩阵可视化
set(h,'alphadata',~isnan(mat));
时间序列重采样
time = datenum(time);
maxt = max(time);
mint = min(time);
tsin = timeseries(data,time);%创建时间序列
t = linspace(mint,maxt,length(time)/10);%创建等时间间隔
tsout = resample(tsin,t).data;%重采样
date_time = datestr(t,'yyyy-mm-dd HH:MM:SS.FFF');%时间格式转换
date_time = datetime(date_time);
判断是否为空值
result = isnan(data);
%result为与data形状一样的向量或者矩阵,nan的位置为1,其他位置为0
result = ismissing(data);
%与isnan()一样
插值
%{
MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method')
其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量,
'method'表示采用的插值方法,MATLAB提供的插值方法有几种:
'nearest'是最邻近插值, 'linear'线性插值; 'spline'三次样条插值; 'pchip'立方插值.缺省时表示线性插值
注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。
%}
t=sort(rand(1,20));
y=rand(1,20)*10;
t1=min(t):0.01:max(t);
y1=interp1(t,y,t1);
subplot(211)
plot(t,y,'r')
subplot(212)
plot(t1,y1)
随机生成0-1矩阵
随机生成m行n列的0-1矩阵,0的概率为0.3
S = rand(m,n) > 0.3;
% 随机生成m行n列的0-1矩阵,0的概率为0.3
FFT变换转换成矩阵相乘
1
x长度为N,为傅里叶变换之后的系数,M<N ( N = 2^nextpow2(M))
则y1=y2。
A = fft(eye(N));
A = A';
A = A(1:M,:);
y1 =A*x;
y2 = Af(x,M,N);
function y = Af(c, M, N)
v = N*ifft(c);
y = v(1:M);
end
2
同上,y1=y2
A = N*ifft(eye(N));
A = A(1:M,:);
y1 =A*x;
y2 = Af(x,M,N);
function y = Af(c, M, N)
v = N*ifft(c);
y = v(1:M);
end
3
A=B
A = N*ifft(eye(N));
A = A(1:M,:);
B = fft(eye(N));
B = B';
B = B(1:M,:)
4
M = length(x),N = 2^nextpow2(M)
两个函数等价
y1 =AT1(x,M,N);
y2 = AT2(x,M,N);
function c = AT1(y,M,N)
A = fft(eye(N));
A = A(1:M,:);
A = A.';
c = A*y;
end
function c = AT2(y, M, N)
c = fft([y; zeros(N-M, 1)]);
end
5
A = fft(eye(N));
A*A'=N*I
图片保存
printme = @(str) print('-dpdf', sprintf('%s', str));