实验五  循环结构程序设计
实验内容
(1)编写程序实现求两矩阵A*B,A.*B.
A*B
>> A=input('输入矩阵A:');
    B=input('输入矩阵B:');
    C=zeros(size(A,1),size(B,2));
    for ii=1:size(A,1)
        for jj=1:size(B,2)
            for k=1:size(A,2)
                C(ii,jj)=C(ii,jj)+A(ii,k)*B(k,jj);
            end
        end
    end
    C
输入矩阵A:[1 2;3 4]
输入矩阵B:[5 6;7 8]
C =
    19    22
43    50
A.*B
>>    A=input('请输入矩阵A:');
    B=input('请输入矩阵B:');
    if size(A)==size(B)
    [m,n]=size(A);
    for i=1:m
        for j=1:n
            C(i,j)=A(i,j)*B(i,j);
        end
    end
          disp('输出A.*B:')
          C
    else
        disp('无效')
    end
请输入矩阵A:[1 2 3]
请输入矩阵B:[4 5 6]
输出A.*B:
C =
    4    10    18
(2)编写程序实现求矩阵的转置。
>> A=input('请输入矩阵A:');
    [m,n]=size(A);
    B=zeros(n,m);
    for i=1:m;
    for j=1:n;
    B(i,j)=A(j,i);
    end
    end
    disp(B)
请输入矩阵A:[1 2 3;4 5 6;7 8 9]
    1    4    7
    2    5    8
    3    6    9
小结实验心得体会
通过本次实验,我慢慢理解了循环控制结构的执行过程,掌握了一些循环结构程序设计方法,但还不是很熟练。我了解了一些MATLAB的编程方法和循环结构程序设计方法,但都不是特别的熟练,都有待加强。

实验  一维二维数组的创建和寻访
一、实验目的
1、掌握一维数组、二维数组创建和寻访的几种方法。
2、区别数组运算和矩阵运算的差别。
3、熟悉执行数组运算的常用数组操作函数。
4、掌握数组运算中的关系和逻辑操作及常用的关系、逻辑函数。
5、掌握“非数”、“空”数组在MATLAB中的应用。
二、实验主要仪器与设备
三、预习要求
做实验前必须认真复习第三章MATLAB的数值数组及向量化运算功能。
四、实验内容及实验步骤
1、一维数组的创建方法有哪几种?举例说明。
答:一维数组的创建方法有:
①递增/递减型一维数组的创建:冒号生成法:x=aincb
                            线性(或对数)定点法:x=linspace(a,b,n),x=logspace(a,b,n)
逐个元素输入法:如x=[0.1,sin(pi/5),-exp(-3),-2*pi]
运用MATLAB函数生成法:例ones,rand等。
2、输入以下指令,并写出运行结果。本例演示:数组元素及子数组的各种标识和寻访格式;冒号的使用;end的作用。
A=zeros(2,6)  %创建(2×6)的全零数组
A(:)=1:12  %赋值号左边:单下标寻访(2×6) 数组A的全部12个元素
            %赋值号右边:拥有12个元素的一维数组
A(2,4)      %双下标:A数组的第2行第4列元素
A(8)      %单下标:数组A的第8个元素
A(: , [1,3])    %双下标:显示A的“第1列和第3列上全部行的元素”
A([1, 2, 5, 6]')  %单下标:把A数组第1,2,5,6个元素排成列向量
A(: , 4:end)    %双下标:显示A的“从第4起到最后一列上全部行的元素”
              %在此end用于“列标识”,它表示“最后一列”
A(2,1:2:5)=[-1, -3, -5]    %把右边的3个数分别赋向A数组第2行的第1,3,5个元素位置
B=A([1, 2, 2, 2], [1, 3, 5])  %取A数组的1,3,5列的第1行元素作为B的第1行
                        %取A数组的1,3,5列的第2行分别作为B的第2,3,4行
L=A<3      %产生与A维数相同的“0,1”逻辑数组
A(L)=NaN    %把逻辑1标识的位置上的元素赋为“非数”
运行结果:
A =
    0    0    0    0    0    0
    0    0    0    0    0    0
A =
    1    3    5    7    9    11
    2    4    6    8    10    12
ans =
    8
ans =
    8
ans =
    1    5
    2    6
ans =
    1
    2
    5
    6
ans =
    7    9    11
    8    10    12
A =
    1    3    5    7    9    11
    -1    4    -3    8    -5    12
B =
    1    5    9
    -1    -3    -5
    -1    -3    -5
    -1    -3    -5
L =
    1    0    0    0    0    0
    1    0    1    0    1    0
A =
  NaN    3    5    7    9    11
  NaN    4  NaN    8  NaN  12
3、输入以下指令,写出运行结果并说明reshape,diag,repmat,flipud,fliplr,rot90的作用。本例演示:数组操作函数的用法;空阵[ ]删除子数组的用法。
        a=1:8  %产生(1×8)一维数组
        A=reshape(a, 4, 2)    %将一维数组a重排成(4×2)的二维数组
        A=reshape(A, 2, 4)    %再把(4×2)数组重组成(2×4)数组
        b=diag(A)  %取(2×4)数组的对角元素形成(2×1)列数组
        B=diag(b)  %据(2matlab数组赋值×1)列数组构造 (2×2)对角阵
        D1=repmat(B, 2, 4)  %把数组B当作模块,按(2×4)形式排放该模块,形成(4×8)数组
        A=reshape(1:9, 3, 3)  %将1到9重排成(3×3)数组
        B=flipud(A)  %上下对称交换
        C=fliplr(A)    %左右对称交换
        D=rot90(A, 2)  %旋转1800
运行结果:
a =
    1    2    3    4    5    6    7    8
A =
    1    5
    2    6
    3    7
    4    8
A =
    1    3    5    7
    2    4    6    8
b =
    1
    4
B =
    1    0
    0    4
D1 =
    1    0    1    0    1    0    1    0
    0    4    0    4    0    4    0    4
    1    0    1    0    1    0    1    0
    0    4    0    4    0    4    0    4

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。