MATLAB中的一些方法


记录自己常用到的一些功能,方便以后查找,持续更新…

矩阵可视化,空值不显示颜色

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));
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值