找回密码
 注册
Simdroid-非首页
查看: 107|回复: 4

想请问板上英雄帮实现一个取值程序

[复制链接]
发表于 2010-10-20 08:43:32 | 显示全部楼层 |阅读模式 来自 台湾
悬赏4仿真币已解决
本帖最后由 武神裝攻 于 2010-10-20 09:04 编辑

实为抱歉一直烦扰各位
恳请拜托 谢谢
-----------------------------------------------------------------------范例数据程序
clear all;
clc
table1 = [ 1     0     1     1
           2     1     2     2
           3     2     3     3
           4     2     4     1  ];
% col1 支路号 col2 起始点 col3 终止点 col4 支路类型
col1 = table1(:,1);
col2 = table1(:,2);
col3 = table1(:,3);
col4 = table1(:,4);
table2 = [1001 1002 1003  ...
          2001 2002 2003  ...
          3001 3002 3003  ...
          4001 4003]';     
% col5 取编码的千位也就是支路号(用来知道V与 I 哪几个是属于哪个支路)   col6 取编码的个位(可知道三相支路三点是否全通或是缺少哪点)
col5  = floor(table2 /1000);
col6 = mod(table2 ,10);
Vtr = [10;12;7;9;11;4;14;13;21;3;8];
-----------------------------------------------------------------------Vtr跟table2 关系
Vtr=[10   ----->1001
     12   ----->1002
     7    ----->1003
     9    ----->2001
     11   ----->2002
     4    ----->2003
     14   ----->3001
     13   ----->3002
     21   ----->3003
     3    ----->4001
     8]   ----->4003
-----------------------------------------------------------------------题目 問:
我想实现求 VS 跟VF
以下是求VS跟VF的步骤
先说col2是用来知道VS
       col3是用来知道VF
(1)一開始col2 = 0
              col3 = 1
看table2千位数是0的  因为没有所以VS = [0; 0; 0];
看table2千位数是1的对应的Vtr   可以找到有10,12,7
个位数就是VF的排列顺序(有缺号的补0)所以VF=[10;12;7];
(2)col2 = 1
    col3 = 2
看table2千位数是1的对应的Vtr   可以找到有10,12,7
个位数就是VS的排列顺序(有缺号的补0)所以VS=[10;12;7];
看table2千位数是2的对应的Vtr   可以找到有9,11,4
个位数就是VF的排列顺序(有缺号的补0)所以VF=[9;11;4];
(3)col2 = 2
    col3 = 3
看table2千位数是2的对应的Vtr   可以找到有9,11,4
个位数就是VS的排列顺序(有缺号的补0)所以VS=[9;11;4];
看table2千位数是2的对应的Vtr   可以找到有14,13,21
个位数就是VF的排列顺序(有缺号的补0)所以VF=[14;13;21];
(4)col2 = 2
    col3 = 4
看table2千位数是2的对应的Vtr   可以找到有9,11,4
个位数就是VS的排列顺序(有缺号的补0)所以VS=[9;11;4];
看table2千位数是2的对应的Vtr   可以找到有3,8
个位数就是VF的排列顺序(有缺号的补0)所以VF=[3;0;8];

验证方法多设一个VSS的矩阵每次求得的VS放入VSS
                            VFF                            VF       VFF
-------------------------------------------------------------------题目END
这是之前所写让编码找到Vtr
A(:,1) =编码
A(:,2) =Vtr
目前继续想中

clear all;
clc;
A(:,1) = [1001;1002;1003;2001;6001;3002;4001;5003;9002];
A(:,2) = [-1;2;5;-8;10;3;4;5;8];
m_tmp = floor(A(:,1)/1000);
m_num = unique(m_tmp);
for k = 1:length(m_tmp)
    m(k) = find(m_num == m_tmp(k));
end
% m = floor(A(:,1)./1000);
n = A(:,1)-10*floor(A(:,1)./10);
ind = sub2ind([max(m),max(n)],m,n');
tmp = zeros([max(m),max(n)]);
tmp(ind) = A(:,2);
B = [unique(floor(A(:,1)/1000)),tmp]

最佳答案

查看完整内容

VSS = 0 0 0 10 12 7 9 11 4 9 11 4 VFF = 10 12 7 9 11 4 14 13 21 3 0 8
发表于 2010-10-20 08:43:33 | 显示全部楼层 来自 湖南湘潭
Simdroid开发平台

  1. clear all;
  2. clc
  3. table1 = [ 1 0 1 1
  4.     2 1 2 2
  5.     3 2 3 3
  6.     4 2 4 1 ];
  7. % col1 支路号 col2 起始点 col3 终止点 col4 支路类型
  8. col1 = table1(:,1);
  9. col2 = table1(:,2);
  10. col3 = table1(:,3);
  11. col4 = table1(:,4);
  12. table2 = [ 1001 1002 1003 ...
  13.     2001 2002 2003 ...
  14.     3001 3002 3003 ...
  15.     4001 4003 ]';
  16. col5 = floor(table2/1000);
  17. col6 = mod(table2, 10);

  18. Vtr = [ 10; 12; 7; 9; 11; 4; 14; 13; 21; 3; 8 ];
  19. % 三相变压器各端口的电位, 如U1a, U1b, U1c....U4a, U4b, U4c
  20. % 1001, 1002, 1003, 2001, 2002, 2003, 3001, 3002, 3003, 4001, 4003
  21. ind = sub2ind([ max(col5), max(col6) ], col5, col6);

  22. Vtr2 = zeros(max(col5), max(col6));
  23. Vtr2(ind) = Vtr; % 转换为矩阵的形式。

  24. VSS = [ ];
  25. for k = 1:length(col1)
  26.     if col2(k) == 0
  27.         VS = zeros(1,3);
  28.     else
  29.         VS = Vtr2(col2(k), :);
  30.     end
  31.     VSS = [ VSS, VS ];
  32. end

  33. VFF = [ ];
  34. for k = 1:length(col1)
  35.     if col3(k) == 0
  36.         VF = zeros(1,3);
  37.     else
  38.         VF = Vtr2(col3(k), :)
  39.     end
  40.     VFF = [ VFF, VF ];
  41. end

  42. VSS
  43. VFF
复制代码
VSS =

     0     0     0    10    12     7     9    11     4     9    11     4


VFF =

    10    12     7     9    11     4    14    13    21     3     0     8

评分

1

查看全部评分

回复

使用道具 举报

发表于 2010-10-20 10:03:12 | 显示全部楼层 来自 西安交通大学
看看,不太懂

评分

1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2010-10-20 10:20:01 | 显示全部楼层 来自 台湾
本帖最后由 武神裝攻 于 2010-10-20 10:24 编辑

就是将范例数据程序贴在.m档里
就会有些参数
其中
col2=table2(千位数)是用来知道每次跑回圈求得VS的位置
col3=table2(千位数)是用来知道每次跑回圈求得VF的位置

VS矩阵跟VF矩阵都是用Vtr矩阵中拿出3个元素
而我上述的就是该如何选辄我要拿哪3个元素
回复

使用道具 举报

 楼主| 发表于 2010-10-21 10:56:18 | 显示全部楼层 来自 台湾
请问是没人会还是看不懂
我都可以说明或是一起讨论
QQ
1247396969
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-6 17:24 , Processed in 0.043394 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表