PDA

查看完整版本 : [MATLAB基础] 想请问板上英雄帮实现一个取值程序


半條龍
2010-10-18, 11:30
实为抱歉一直烦扰各位
恳请拜托 谢谢
-----------------------------------------------------------------------范例数据程序
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];
(3)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

半條龍
2010-10-19, 15:11
不好意思重复(3)

(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];

这是之前所写让编码找到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]

半條龍
2010-10-21, 11:05
请问是没人会还是看不懂
我都可以说明或是一起讨论
QQ
1247396969