武神裝攻 发表于 2010-10-20 08:43:32

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

本帖最后由 武神裝攻 于 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 = ;
-----------------------------------------------------------------------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 = ;
看table2千位数是1的对应的Vtr   可以找到有10,12,7
个位数就是VF的排列顺序(有缺号的补0)所以VF=;
(2)col2 = 1
    col3 = 2
看table2千位数是1的对应的Vtr   可以找到有10,12,7
个位数就是VS的排列顺序(有缺号的补0)所以VS=;
看table2千位数是2的对应的Vtr   可以找到有9,11,4
个位数就是VF的排列顺序(有缺号的补0)所以VF=;
(3)col2 = 2
    col3 = 3
看table2千位数是2的对应的Vtr   可以找到有9,11,4
个位数就是VS的排列顺序(有缺号的补0)所以VS=;
看table2千位数是2的对应的Vtr   可以找到有14,13,21
个位数就是VF的排列顺序(有缺号的补0)所以VF=;
(4)col2 = 2
    col3 = 4
看table2千位数是2的对应的Vtr   可以找到有9,11,4
个位数就是VS的排列顺序(有缺号的补0)所以VS=;
看table2千位数是2的对应的Vtr   可以找到有3,8
个位数就是VF的排列顺序(有缺号的补0)所以VF=0;8];

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

clear all;
clc;
A(:,1) = ;
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(,m,n');
tmp = zeros();
tmp(ind) = A(:,2);
B =

lin2009 发表于 2010-10-20 08:43:33


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 = floor(table2/1000);
col6 = mod(table2, 10);

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

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

VSS = [ ];
for k = 1:length(col1)
    if col2(k) == 0
      VS = zeros(1,3);
    else
      VS = Vtr2(col2(k), :);
    end
    VSS = [ VSS, VS ];
end

VFF = [ ];
for k = 1:length(col1)
    if col3(k) == 0
      VF = zeros(1,3);
    else
      VF = Vtr2(col3(k), :)
    end
    VFF = [ VFF, VF ];
end

VSS
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

lxx244lxx 发表于 2010-10-20 10:03:12

看看,不太懂

武神裝攻 发表于 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
页: [1]
查看完整版本: 想请问板上英雄帮实现一个取值程序