真龍虎王 发表于 2010-5-25 08:37:13

求一同帮改程序 判别资料依对角化矩阵排列

本帖最后由 真龍虎王 于 2010-5-25 09:00 编辑

求各位高手一同解决问题谢谢

原题目:看楼下(2#)
程序:
clear all
clc
Info = [
    1   0   1   1
    2   1   2   1
    3   2   3   2
    4   2   4   3];
Cmd = [
    1001
    1002
    1003
    2001
    2003
    3001
    3003
    4001
    ];
c1 = floor(Cmd/1000); % 千位数
c2 = mod(Cmd,10);   % 个位数
ABC = ;            % ABC的代码值
for k = 1: size(Info,1)
    lacks = setdiff(,c2(c1 == k)); % 缺少的数字
    X = ABC(Info(k,4))*ones(3,3);
    if ~isempty(lacks)
      for n = 1:length(lacks)
            X(lacks(n),:) = 0;
            X(:,lacks(n)) = 0;
      end
    end
    Yk{k} = X
end
for k = 1: size(Info,1)
    for kk = 1:size(Info,1)
      if k ~= kk && Info(kk,2) == Info(k,3)% 起点 = 终点
            Yk{k} = Yk{k} + Yk{kk};
      end
    end
end
Y = blkdiag(Yk{:})
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
新题目
(1)A变0
所以程序
ABC = ;   变ABC = ; 即可
最后
Y=[000000000000   
      0 00000000000         
    000000000000                        
      0003 02000000                                       
      000000000000                                       
      0002 02000000                                       
      000000202000                                       
      000000000000                                       
      000000202000
      000000000100
      000000000000
      000000000000
(2) 原本缺的项要再删掉
Y=[ 000000000000   
      000000000000         
    000000000000                        
      0003 0   2000000                                       
    000000000000                                       
      0002 0   2000000                                       
      000000202000                                       
    000000000000                                       
      000000202000
      000000000100
      000000000000
      000000000000
最后
Y=[ 00000000   
      00000000            
    00000000                        
      00032000                                                                      
      00022000                                       
      00000220                                                         
      00000220
      00000001

原本想改
            X(lacks(n),:) = 0;
            X(:,lacks(n)) = 0;

            X(lacks(n),:) = [];
            X(:,lacks(n)) = [];

却失败
在此求帮改出Y

真龍虎王 发表于 2010-5-25 08:47:00

本帖最后由 真龍虎王 于 2010-5-25 08:53 编辑

原题目:
表1:
Info = [
支路号   起始点   终止点支路类型编号
    1         0         1          1
    2         1         2          1
    3         2         3          2
    4         2         4          3];
表2:
Cmd = [
    1001
    1002
    1003
    2001
    2003
    3001
    3003
    4001
    ];

A=3
B=2
C=1
(1)看表1支路号 = 1 支路类型编号 = 1找到 终止点 = 1 起始点 = 0
看表2内容与相终止同千位数为1的有1001,1002,1003共3个
因为支路类型编号 =1
支路类型编号相对应的(类型1-A,类型2-B,类型3-C)
故X=[A A A=[3 3 3    3*3大小的矩阵且 终止点 = 1 起始点 = 0 故只要X放入Y
          A A A   3 3 3
          A A A   3 3 3]
   Y=[3 3 3   
          3 3 3
          3 3 3]
(2)看表1支路号 = 2 支路类型编号 = 1找到 终止点 = 2 起始点 = 0
看表2内容与相终止同千位数为2的有2001,2003共2个
因为支路类型编号 =1
支路类型编号相对应的(类型1-A,类型2-B,类型3-C)
故X=[A 0A   =[3 0 3   因為表2个位数沒有2所以补0
          000      0 0 0
          A 0A      3 0 3
终止点 = 2 起始点 = 1
Y=[333000   又因起始点 = 1      Y=[636000
      333000所以刚终止点 = 1          3   33   00   0
      333000也要+X                            6   36   00   0
      000303                                           0   00   30   3
      000000                                           0   00   00   0
      000303                                           0   00   30   3
(3)看表1支路号 = 3 支路类型编号 = 2找到 终止点 = 3 起始点 = 2
看表2内容与相终止同千位数为3的有3001,3003共2个
因为支路类型编号 =2
支路类型编号相对应的(类型1-A,类型2-B,类型3-C)
故X=[B 0B   =[2 0 2   因為表2个位数沒有2所以补0
          000      0 0 0
          B 0B      2 0 2
终止点 = 3 起始点 = 2
Y=[636000000   又因起始点 = 2   Y=[6 3 6 0 0 0 0 0 0
      333000000所以刚终止点 = 2         3 3 30 0 0 0 0 0
      636000000也要+X                           6 3 6 0 0 0 0 0 0
      000303000                                          0 0 0 5 0 5 0 0 0
      000000000                                          0 0 0 0 0 0 0 0 0
      000303000                                          0 0 0 5 0 5 0 0 0
      000000202                                          0 0 0 0 0 0 2 0 2
      000000000                                          0 0 0 0 0 0 0 0 0
      000000202                                 0 0 0 0 0 0 2 0 2
(4)看表1支路号 = 4 支路类型编号 = 3找到 终止点 = 4 起始点 = 2
看表2内容与相终止同千位数为4的有4001共1个
因为支路类型编号 =3
支路类型编号相对应的(类型1-A,类型2-B,类型3-C)
故X=[C 00   =[1 0 0   因為表2个位数沒有2,3所以补0
          000      0 0 0
          0 00       0 0 0
终止点 = 3 起始点 = 2
Y=[636000000000 又因起始点 = 2   
      333000000000所以刚终止点 = 2         
      636000000000 也要+X                           
      000505000000                                       
      000000000000                                       
      000505000000                                       
      000000202000                                       
      000000000000                                       
      0000002020 00
      0000000001 0 0
      0000000000 0 0
      0000000000 0 0
最后
Y=[636000000000   
      333000000000         
      636000000000                        
      000605000000                                       
      000000000000                                       
      000505000000                                       
      000000202000                                       
      000000000000                                       
      000000202000
      000000000100
      000000000000
      000000000000

真龍虎王 发表于 2010-5-31 08:44:15

请问有人可以最后完成是
Y=[ 00000000   
      00000000            
      000 00000                        
      00032000                                                                     
      00022 000                                       
      00000220                                                         
      00000220
      0000000 1
页: [1]
查看完整版本: 求一同帮改程序 判别资料依对角化矩阵排列

招聘斑竹