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

[未解決]请帮修急!请问一个矩阵分多个3*1后相乘的程序 PART3

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

小弟愚笨深感抱歉一直烦劳板上各位
恳请板上英雄出动谢谢
最下面有写程序但是目前又遇到其妙的事 便是A与B改有实虚数变不行
本来例题
A=[1 1 1;1 2 3;1 3 2];
B=[ 0.0003  1001
      0.0002  1002
      0.0001  1003
      0.0004  2001
      0.0005  2003
      0.0006  3003]
求C
步骤
看B第二列千位数值皆为相同数字表示为同一个3*1的矩阵
                个位数值表示B的第一列该放入为3*1的哪个位置
EXE
先看B第二列千位数=1 找到第一列 [0.0003;0.0002;0.0001]
放入3*1的记忆体中 X=[0.0003;0.0002;0.0001]
A*X放入C 此时 C=[0.0006;0.00010;0.00011]
再看B第二列千位数=2 找到第一列 [4;5]
但是不满3*1所以便看个位数值缺2所以補0 X=[0.0004;0;0.0005]
A*X放入C 此时 C=[0.0006;0.0010;0.0011;0.0009;0.0019;0.0014]
再看B第二列千位数=3 找到第一列 [4;5]
但是不满3*1所以便看个位数值缺1.2所以補0 X=[0;0;0.0006]
A*X放入C 此时 C=[0.0006;0.0010;0.0011;0.0009;0.0019;0.0014;0.0006;0.0018;0.0012]



想改题目
程序方法与之前没变只是改A矩阵有角度却出现错误

A=(1./3)*[1 1 1;1 120度 240度;1 240度 120度];
B(:,1) = [-18.0000000000000 - 8.70000000000000i;1.46557898707538 + 19.9384572681199i;16.5344210129246 - 11.2384572681199i;]
B(:,2) =[1001;1002;1003]

程序:
complex1 = cosd(120)+i*sind(120);
complex2 = cosd(-120)+i*sind(-120);
Am = (1./3)*[1 1 1;1 complex1 complex2;1 complex2 complex1];
K=[(-18.0000000000000-8.70000000000000*i)  1001;
   (1.46557898707538+19.9384572681199*i)  1002;
   (6.5344210129246-11.2384572681199*i)  1003];
B(:,1) = K(:,1);
B(:,2) = K(:,2);
G=int32(B(:,2));
D=[idivide(G,1000) mod(G,1000)];
E=sub2ind([D(end,1),3],D(:,1),D(:,2));
F=zeros(D(end,1),3);
F(E)=B(:,1);
F2=(Am*F');
F3 = size(F2);
rowindex = sum(F2==0,2)==size(F2,2);
colindex = sum(F2==0,1)==size(F2,1);
F2(rowindex,:) = [];
F2(:,colindex) = [];
F3 = F2;
C=F3(:);

结果C:
-3.33333333333334 - 4.44089209850063e-16i
1.66666666666667 + 2.88675134594813i
-16.3333333333333 + 5.81324865405187i


但是单纯正解的测试
Y=[-18.0000000000000 - 8.70000000000000i;1.46557898707538 + 19.9384572681199i;16.5344210129246 - 11.2384572681199i;]
Am = (1./3)*[1 1 1;1 complex1 complex2;1 complex2 complex1];
R=Am*Y;
结果正解C=R:
-7.10542735760100e-15 + 4.44089209850063e-16i
-18.0000000000000 - 8.70000000000000i
5.77315972805081e-15 - 2.66453525910038e-15i


求救帮求出R

最佳答案

查看完整内容

F5=F*A; A没有定义!自己未调试通过的程序就粘上来是很草率的事情! F2=(Am*F'); 依照你的题目意思,应该为 F2=( Am*F.' ); ' 和 .' 对于复数来说是有区别的。
发表于 2010-4-18 20:10:29 | 显示全部楼层 来自 湖南湘潭
Simdroid开发平台
F5=F*A;  A没有定义!自己未调试通过的程序就粘上来是很草率的事情!
F2=(Am*F'); 依照你的题目意思,应该为 F2=( Am*F.' );  
' 和 .'  对于复数来说是有区别的。

评分

1

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2010-4-19 07:31:24 | 显示全部楼层 来自 台湾
本帖最后由 武神裝攻 于 2010-4-19 07:42 编辑
F5=F*A;  A没有定义!自己未调试通过的程序就粘上来是很草率的事情!
F2=(Am*F'); 依照你的题目意思,应该为 F2=( Am*F.' );  
' 和 .'  对于复数来说是有区别的。
lin2009 发表于 2010-4-18 20:43


对此深感抱歉F5那只是纯粹测是忘了删除
但是L大说的方法依旧一样无法求初跟R相同答案

欧欧小弟看错已完成感谢
回复

使用道具 举报

发表于 2010-4-19 11:21:19 | 显示全部楼层 来自 浙江杭州
注意,提问之前先自己检查一下,不要很简单的错误你让大家为你检查,大家都很忙。
回复

使用道具 举报

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-9-22 05:36 , Processed in 0.040215 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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