2014-12-19 回答
你这里b和a的列维数不相同,我给你的b后面补了个零。另外,你这里a中没有和b相同的列,我给a后面补了个相同的列,便于测试。
追问:
您好,我不是需要将a中的一整列数据都赋值为0
是这样的,如果a中出现了b中的相反数,就单个赋值为0
如a中
第一行第二列、第一行第四列、第四行第一列、第四行第三列中的数据为0就行了
找出a中=-b的位置,然后再将位置上的数赋值为0,我MATLAB基础不太好,请问怎么写
追问:
您好,我不是需要将a中的一整列数据都赋值为0
是这样的,如果a中出现了b中的相反数,就单个赋值为0
如a中
第一行第二列、第一行第四列、第四行第一列、第四行第三列中的数据为0就行了
找出a中=-b的位置,然后再将位置上的数赋值为0,我MATLAB基础不太好,请问怎么写
追答:
不好意思,一直没看见。按照下面的程序写就行了
a=[1.10000000000000-0.5000000000000000.900000000000000-0.700000000000000;...
1.800000000000002.100000000000001.600000000000001.90000000000000;...
2.500000000000002.800000000000002.300000000000002.60000000000000;...
-0.500000000000000-0.200000000000000-0.600000000000000-0.400000000000000;...
0.2000000000000000.50000000000000000.300000000000000]
b=[0.5000000000000000.5000000000000000.6000000000000000.700000000000000 0]'
c = a; %将a给c
d = -b; %将-b给d
[line,row] = size(a); %获取a的行和列
for line_i = 1:line
for row_i = 1:row
temp = find(d == a(line_i,row_i)); %挨个判断c中的元素是否在d中出现
if(~isempty(temp)) %出现则赋值为零
c(line_i,row_i) = 0;
end
end
end
c
结果如下:
c =
1.1000 0 0.9000 0
1.8000 2.1000 1.6000 1.9000
2.5000 2.8000 2.3000 2.6000
0 -0.2000 0 -0.4000
0.2000 0.5000 0 0.3000
ps:你这个回答不让插入代码啊,这样看起来很不方便。下次提问的时候,记得选择可以插入代码。
追问:
谢谢您!可惜我之前已经采纳了其他人的答案还是要跟您说一声谢谢