想请问板上英雄帮实现一个取值程序
本帖最后由 武神裝攻 于 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 =
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 看看,不太懂 本帖最后由 武神裝攻 于 2010-10-20 10:24 编辑
就是将范例数据程序贴在.m档里
就会有些参数
其中
col2=table2(千位数)是用来知道每次跑回圈求得VS的位置
col3=table2(千位数)是用来知道每次跑回圈求得VF的位置
VS矩阵跟VF矩阵都是用Vtr矩阵中拿出3个元素
而我上述的就是该如何选辄我要拿哪3个元素 请问是没人会还是看不懂
我都可以说明或是一起讨论
1247396969
页:
[1]