我是靠谱客的博主 单薄眼睛,最近开发中收集的这篇文章主要介绍Matlab基础之矩阵循环一、for循环二、while循环三、逻辑数组四、选择排序和冒泡排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

纯小白零基础,非小白绕道,文档写的比较乱,将就着看吧。


一、for循环

for循环和c++的for循环还是有区别的,用起来简化很多。格式:for 。。。end

example1;

创建一个10阶的希尔伯特矩阵:

s = 10;
H = zeros(s);

for c = 1:s
    for r = 1:s
        H(r,c) = 1/(r+c-1);
    end
end
数字求和:

sum=0;
for i=1:1:100
sum=sum+i;
end
fprintf('sum =%d',sum);
矩阵运算:

a=[1 2 3;4 5 6;7 8 9];
for i=1:size(a,1)//矩阵a的行
    for j=1:size(a,2)//矩阵a的列
        if a(i,j)>5
            a(i,j)=sqrt(a(i,j));
        end
    end
end
for i=1:size(a,1)
    for j=1:size(a,2)
        if(j>2)
        fprintf('%fn',a(i,j));
        else
             fprintf('%ftt',a(i,j));
        end
    end
end

result:

1.000000 2.000000   3.000000
4.000000 5.000000   2.449490
2.645751 2.828427   3.000000

二、while循环

1.用while循环计算10的阶乘:

n = 10;
f = n;
while n > 1//判断条件不带括号也行啊
    n = n-1;
    f = f*n;
end
disp(['n! = ' num2str(f)])
2.计算输入数(正数)的平均数:

%变量如下:
%x
%sum_x,n,average
x=input('input one number please !n');
sum_x=0;
n=0;
while(x>0)
n=n+1;
sum_x=sum_x+x;
x=input('input one number please !n');
if (x<0)
    break;
end;
end;
if(n==0)
fprintf('input a positive number please !n');
else
fprintf('Only input a number so only the average !n')
average=sum_x/n;
fprintf('average is :%fn',average);
end

三、逻辑数组

就是给一个数组进行逻辑运算,它和数组用循环的方式计算效果一样,但效率比较高。

1.比如一个数组a=[1 2 3;4 5 6;7 8 9],对它执行命令c=a>3时,此时逻辑矩阵c=[0 0 0;1 1 1;1 1 1]; 再执行a(c)时,就是取a矩阵里对应逻辑矩阵c为真时的值:4 5 6 7 8 9;

若执行a(c)=sqrt(a(c))时,

a =
    1.0000    2.0000    3.0000
    2.0000    2.2361    2.4495
    2.6458    2.8284    3.0000

我们可以把for循环里第三个代码用逻辑数组(矩阵)来实现:

a=[1 2 3;4 5 6;7 8 9];
c=a>5;
a(c)=sqrt(a(c));
i=0;
j=0;
for i=1:3
for j=1:3
    if j>2
fprintf('%fn',a(i,j));
    else
        fprintf('%ft',a(i,j));
    end
end;
end;

那么两种方法那种效率更好呢?下面就来对比看看

for Loop:

a=1:10000;
b=reshape(a,100,100);%Devide a into 100*100
tstart=tic;%Time is strat
for i=1:100
for j=1:100
if b(i,j)>3000
b(i,j)=sqrt(b(i,j));
end
end
end
time_end=toc(tstart);%Time is over
fprintf('the use of time is :%f',time_end);
%%%%%
result:
the use of time is :0.003353>>;

logical:

a=1:10000;
b=reshape(a,100,100);
tstart=tic;%Time is strat
c=b>3000;
b(c)=sqrt(b(c));
time_end=toc(tstart);%Time is over
fprintf('the use of time is :%f',time_end);
%%%%%%
result:
the use of time is :0.002274>> 

逻辑运算 要快些。

四、选择排序和冒泡排序

%1.选择排序
a=[1 2 -1 3 2 6 8 8 2 3 2 10];
n=length(a);
for i=1:length(a)-1
for j=i+1:length(a)
if(a(i)>a(j))
t=a(i);
a(i)=a(j);
a(j)=t;
end
end
end
disp('排序后:')
a

%2.冒泡排序
a=[1 2 -1 3 2 6 8 8 2 3 2 10];
n=length(a); 
for i=1:n-1   
 for j=1:n-i        
  if a(j+1)<a(j)           
      temp=a(j);           
      a(j)=a(j+1);       
      a(j+1)=temp;      
  end   
 end 
end  
disp('')
a

%3.matlab自带排序函数sort();
a=[1 2 -1 3 2 6 8 8 2 3 2 10];
b=sort(a,'descend');%升序排列
c=sort(a,'ascend');%降序排列
disp('')
b 
c
%result:
排序后:

a =

    -1     1     2     2     2     2     3     3     6     8     8    10

对于sort()函数想了解更多,参考matlab文档。




最后

以上就是单薄眼睛为你收集整理的Matlab基础之矩阵循环一、for循环二、while循环三、逻辑数组四、选择排序和冒泡排序的全部内容,希望文章能够帮你解决Matlab基础之矩阵循环一、for循环二、while循环三、逻辑数组四、选择排序和冒泡排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部