double(A)即可实现
Matlab中什么是logical
logical作为逻辑变量,可以是一种数据类型,第一次见到是在workspace里100*1logical,可以用在取出最值。
logical是布尔变量,可以是一个标量,也可以是一个向量或者是矩阵。可以用作下标。
在帮助文档中给出了一个例子:
A=[123;456;789]
要想取出对角元素,可以用diag(A),也可以借助下标。
构建一个logical矩阵,或者说是下标矩阵logical(eye(3))
T=eye(3)是3*3单位阵
logical(T)是把为真(1)的值取出
即:eye(3)=[100;010;001;]
A(logical(eye(3))的意思是取出下标为真的元素:
最终返回:[1;5;9];
参考:
求极值
clear;
N=100;
v=rand(N,1);
t=0:length(v)-1;
Lmax=diff(sign(diff(v)))==-2;%logicvectorforthelocalmaxvalue
Lmin=diff(sign(diff(v)))==2;%logicvectorforthelocalminvalue
%matchthelogicvectortotheoriginalvecortohavethesamelength
Lmax=[false;Lmax;false];
Lmin=[false;Lmin;false];
tmax=t(Lmax);%locationsofthelocalmaxelements
tmin=t(Lmin);%locationsofthelocalminelements
vmax=v(Lmax);%valuesofthelocalmaxelements
vmin=v(Lmin);%valuesofthelocalminelements
%plotthemonafigure
plot(t,v);
xlabel('t');ylabel('v');
holdon;
plot(tmax,vmax,'r+');
plot(tmin,vmin,'g+');
holdoff;