MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB基础] 问一下指定矩阵某列为0的程序实现 (https://www.labfans.com/bbs/showthread.php?t=12400)

半條龍 2010-12-17 14:25

问一下指定矩阵某列为0的程序实现
 
不好意思的打扰一下各位 在此先恳请帮助 谢谢
小弟最近又遇上个有趣问题 依提示将值改为零

以下是小弟数据
A = [5 6 7 8 9;4 5 6 7 8;1 2 3 4 5;6 7 8 9 1;8 9 4 5 5;8 9 6 6 6;1 2 5 5 8;7 8 9 9 7;4 6 7 8 9;5 5 5 6 9;2 2 4 5 6;3 5 4 6 9;7 8 9 5 4;9 8 7 5 6;6 7 8 9 9;7 8 9 9 9;1 5 7 9 7;4 5 6 6 4];
B = [1;5;7];
C =[1001;1002;1003;2001;2002;2003;3001;3002;3003;4001;4003;5001;5003;6001;6002;6003;7001;7002];

就是A的每列我们都给他代号C 所以A与C的关系就是
A = [5 6 7 8 9; ---> C = [1001;
4 5 6 7 8; ---> 1002;
1 2 3 4 5; ---> 1003;
6 7 8 9 1; ---> 2001;
8 9 4 5 5; ---> 2002;
8 9 6 6 6; ---> 2003;
1 2 5 5 8; ---> 3001;
7 8 9 9 7; ---> 3002;
4 6 7 8 9; ---> 3003;
5 5 5 6 9; ---> 4001;
2 2 4 5 6; ---> 4003;
3 5 4 6 9; ---> 5001;
7 8 9 5 4; ---> 5003;
9 8 7 5 6; ---> 6001;
6 7 8 9 9; ---> 6002;
7 8 9 9 9; ---> 6003;
1 5 7 9 7; ---> 7001;
4 5 6 6 4]; ---> 7002];
我希望求得的D的第一排 = A的第一排
之后排的值会由于B= [[COLOR="Blue"]1;5;7[/COLOR]];所指的数字将A的千位数代号的那列值设为零 所以D=
D = [5[COLOR="DarkRed"] 0 0 0 0;[/COLOR] ---> C = [[COLOR="blue"]1001;[/COLOR]
4[COLOR="darkred"] 0 0 0 0;[/COLOR] ---> [COLOR="blue"]1002;[/COLOR]
1 [COLOR="darkred"]0 0 0 0; [/COLOR] ---> [COLOR="Blue"]1003;[/COLOR]
6 7 8 9 1; ---> 2001;
8 9 4 5 5; ---> 2002;
8 9 6 6 6; ---> 2003;
1 2 5 5 8; ---> 3001;
7 8 9 9 7; ---> 3002;
4 6 7 8 9; ---> 3003;
5 5 5 6 9; ---> 4001;
2 2 4 5 6; ---> 4003;
3 [COLOR="darkred"]0 0 0 0; [/COLOR] ---> [COLOR="blue"]5001;[/COLOR]
7 [COLOR="darkred"]0 0 0 0;[/COLOR] ---> [COLOR="blue"]5003;[/COLOR]
9 8 7 5 6; ---> 6001;
6 7 8 9 9; ---> 6002;
7 8 9 9 9; ---> 6003;
1 [COLOR="darkred"]0 0 0 0;[/COLOR] ---> [COLOR="blue"]7001;[/COLOR]
4 [COLOR="darkred"]0 0 0 0[/COLOR] ]; ---> [COLOR="blue"]7002[/COLOR]];

半條龍 2010-12-17 17:12

回复: 问一下指定矩阵某列为0的程序实现
 
A = [5 6 7 8 9;4 5 6 7 8;1 2 3 4 5;6 7 8 9 1;8 9 4 5 5;8 9 6 6 6;1 2 5 5 8;7 8 9 9 7;4 6 7 8 9;5 5 5 6 9;2 2 4 5 6;3 5 4 6 9;7 8 9 5 4;9 8 7 5 6;6 7 8 9 9;7 8 9 9 9;1 5 7 9 7;4 5 6 6 4];
B = [1;5;7];
C =[1001;1002;1003;2001;2002;2003;3001;3002;3003;4001;4003;5001;5003;6001;6002;6003;7001;7002];
n = floor(log10(C(1))) + 1;
num=mod(floor(C./10.^(n-1)),10);
D=A;
D(ismember(num,B),2:end)=0;


所有时间均为北京时间。现在的时间是 03:15

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.