记一些Matlab的常用语句

(1)得到m×n的±1随机分布的矩阵

a=rand(3,4);
>> a=(a>0.5)-(a<0.5);

得到±1随机分布的3×4的矩阵如下:

(2)删除矩阵中某列所有元素(不)等于x的行,删除矩阵中某行所有元素(不)等于y的列

在matlab编码过程中,经常会遇到提取指定数据的问题,比如在m×n的矩阵中,矩阵的第二列包含10年的所有月份,而你只想研究10年里每年3月的数据,这时候就需要提取该矩阵所有包含3月的行。一般操作如下:

m=zeros(24,3);%生成24行3列的零矩阵
>> m(1:12,2)=1:12;
>> m(13:24,2)=1:12;%其中第2列为两年的月份,即1~12,1~12
%%现要提取其中包含3月份的所有行
k=[];%创建一个空矩阵用来存放包含3月份数据的行号
for i=1:length(m)%遍历矩阵m
    if m(i,2)==3%如果i行2列的元素等于3
        k=[k;i];%记录下行号
    end
end
x=m(k,:)%将矩阵m中被记录的行号的数据赋值给x矩阵

x =

     0     3     0
     0     3     0

考虑到其编码复杂性及处理效率较低,笔者自己摸索出了一个较为高效的语句,如下两个例子分别删除指定行和指定列,提取指定行和列亦然,请读者稍作变通,不作赘述。 

a=[1 2 3 4;5 6 7 8; 2 3 5 6 ;3 3 3 3]

a =

     1     2     3     4
     5     6     7     8
     2     3     5     6
     3     3     3     3

>> a(a(:,2)~=3,:)=[]%遍历第2列,删除其中不等于3的元素所在的行

a =

     2     3     5     6
     3     3     3     3
a=[1 2 3 4;5 6 7 8; 2 3 5 6 ;3 3 3 3]

a =

     1     2     3     4
     5     6     7     8
     2     3     5     6
     3     3     3     3

>> a(:,a(3,:)==5)=[]%遍历第三行所有元素,如果该元素等于5,则删除其所在列

a =

     1     2     4
     5     6     8
     2     3     6
     3     3     3

(3)save的用法

(1)保存矩阵到.txt文件中

a=rand(3)%生成3×3的矩阵

a =

    0.1419    0.7922    0.0357
    0.4218    0.9595    0.8491
    0.9157    0.6557    0.9340

save a.txt -ascii a%将该矩阵保存到a.txt文件中,该文件位于当前所在目录
b=importdata('a.txt');读取a.txt中的数据到b矩阵中

(2)保存变量到.mat文件中

save 7_19%将当前工作区所有变量保存到7_19.mat文件中,下次直接双击7_19.mat文件,即可得到之前的变量

猜你喜欢

转载自blog.csdn.net/qq_42276781/article/details/96480490