Kismet885 2022-11-25 16:36 采纳率: 100%
浏览 12
已结题

求解释每行代码的意思以及总体意思

%%
clear all
clc




```P=[];D=[];B=[];A=[];C=[];
 for row=1:1:8
        for colum=1:1:7
            if row==colum
                C(row,colum)=-1;
            elseif row==colum+1
                C(row,colum)=1;

```html



```            else C(row,colum)=0;
            end
        end
 end
 
```html



```for w=1000:1000:10000000
     c=w;P=[P c];
     s=j*w;
     b=19.8e-12*s;
     a=b+1.214286e-9*s;
     for i=1:7
         for cj=1:7
             if i==cj
                 A(i,cj)=0.041426*s;
 
```html



```            else  A(i,cj)=0;
             end
         end
     end

```html



```     for ii=1:8
         for jj=1:8
             if ii==jj&&ii<2||ii==jj&&ii>7
                 B(ii,jj)=a;
             else if ii==jj&&ii>1&&ii<8
                     B(ii,jj)=a+b;
             else if ii+1==jj||ii==jj+1
                     B(ii,jj)=-b;
                 else B(ii,jj)=0;
                 end 
                 end
             end
         end
     end
 
```html



```M=C*inv(A)*C'+B;
    M1=M([2:8],:);
    N1=M1(:,1);
    N=M1(:,2:8);
    U=-1*inv(N)*N1;
    H=20*log10(abs((U(7))));

```html



```    E=H;D=[D,E];
 end
semilogx(P,D);
  • 写回答

1条回答 默认 最新

  • 小数点儿_ 2022-11-26 10:44
    关注
    
    P=[];D=[];B=[];A=[];C=[]; % 初始化 P,D,B,A,C 五个数组 
    
    % 给数组C赋值---开始
    for row=1:1:8           % 循环 行row = 1,2,3,4,5,6,7,8  
        for colum=1:1:7       % 循环 列colum = 1,2,3,4,5,6,7  
            if row==colum        % 若  行row==列colum
                C(row,colum)=-1;   % 数组C 第row行,第colum列 = -1
            elseif row==colum+1  % 若 行row==列colum+1
                C(row,colum)=1;    % 数组C 第row行,第colum列 = 1
            else                 % 否则
                C(row,colum)=0;    % 数组C 第row行,第colum列 = 0
            end                  % 结束 if
        end                   % 结束 for
    end                     %结束 for
    % 给数组C赋值---结束
    
    % 给C赋值后的结果如下:
    % C = [ -1  0  0  0  0  0  0 
    %        1 -1  0  0  0  0  0 
    %        0  1 -1  0  0  0  0 
    %        0  0  1 -1  0  0  0 
    %        0  0  0  1 -1  0  0 
    %        0  0  0  0  1 -1  0 
    %        0  0  0  0  0  1 -1 
    %        0  0  0  0  0  0  1 ]
           
    for w=1000:1000:10000000 % 循环 w = 1000,2000,3000,...,9999000,10000000
        c=w;                    % 赋值 c = w               
        P=[P c];                % 把 c 的值加入 数组 P 中
        s=j*w;                  % s = j * w   ,这里未定义 j
        b=19.8e-12*s;           % b = 19.8*10^(-12) * s
        a=b+1.214286e-9*s;      % a = b + 1.214286*10^(-9) * s
        
        % 给数组A赋值---开始
        for i=1:7               % 循环 i = 1,2,3,4,5,6,7            
            for cj=1:7              % 循环 cj = 1,2,3,4,5,6,7  (cj 是一个变量,不是c*j)
                if i==cj                  % 若 i = cj   
                    A(i,cj)=0.041426*s;        % 数组A 第i行,第cj列 = 0.041426*s
                else                      % 否则
                    A(i,cj)=0;                 % 数组A 第i行,第cj列 = 0
                end                       % 结束 if
            end                     % 结束 for
        end                    % 结束 for
        % 给数组A赋值---结束
    
        % 给A赋值后的结果如下:
        % A = [ 0.041426*s            0            0            0            0            0            0 
        %                0   0.041426*s            0            0            0            0            0 
        %                0            0   0.041426*s            0            0            0            0 
        %                0            0            0   0.041426*s            0            0            0 
        %                0            0            0            0   0.041426*s            0            0 
        %                0            0            0            0            0   0.041426*s            0 
        %                0            0            0            0            0            0   0.041426*s]
        
        % 给数组B赋值---开始
        for ii=1:8                                % 循环 ii = 1,2,3,4,5,6,7,8
            for jj=1:8                                 % 循环 jj = 1,2,3,4,5,6,7,8
                if ii==jj && ii<2 || ii==jj && ii>7         % 若 (ii==jj 且 ii<2) 或 (ii==jj 且 ii>7)
                    B(ii,jj)=a;                                 % 数组B 第ii行,第jj列 = a  (a在上面定义过 = b+1.214286e-9*s) 
                else if ii==jj && ii>1 && ii<8              % 若 ii==jj 且 ii>1 且 ii<8   
                    B(ii,jj)=a+b;                               % 数组B 第ii行,第jj列 = a + b
                else if ii+1==jj || ii==jj+1                % 若 ii+1==jj 或 ii==jj+1 
                    B(ii,jj)=-b;                                % 数组B 第ii行,第jj列 = -b
                else                                        % 否组
                    B(ii,jj)=0;                                 % 数组B 第ii行,第jj列 = 0
                end                                         % 结束 if
            end                                        % 结束 for
        end                                        % 结束 for
        % 给数组B赋值---结束
    
        % 给B赋值后的结果如下:
        % B = [  a  -b   0   0   0   0   0  0
        %       -b a+b  -b   0   0   0   0  0 
        %        0  -b a+b  -b   0   0   0  0
        %        0   0  -b a+b  -b   0   0  0
        %        0   0   0  -b a+b  -b   0  0 
        %        0   0   0   0  -b a+b  -b  0
        %        0   0   0   0   0  -b a+b -b 
        %        0   0   0   0   0   0  -b  a]
        
        M=C*inv(A)*C'+B;                 % M = C * A的逆矩阵 * C的复共轭转置 + B       
        M1=M([2:8],:);                   % M1 =  M 数组 的 第2行到第8行 的所有元素组成的数组
        N1=M1(:,1);                      % N1 = M1 数组第1列的所有元素组成的列向量
        N=M1(:,2:8);                     % N = M1 数组 的 第2列到第8列 的所有元素组成的数组
        U=-1*inv(N)*N1;                  % U = -1 * N的逆矩阵 * N1
        H=20*log10(abs((U(7))));         % H = 20 * log10 ( 向量U的第七个元素的 绝对值 )
        E=H;                             % E = H
        D=[D,E];                         % D = 把 E 加入 数组 D 中
    end
    
    semilogx(P,D);                       % 绘制 以 10 为底的对数函数,向量P 的值为x轴,向量D 的值为y轴
    

    以上代码最终目的为了绘制 以 10 为底的对数函数的图

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月4日
  • 已采纳回答 11月26日
  • 创建了问题 11月25日

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?