Sum every i-th column in matrix seperately
2 次查看(过去 30 天)
显示 更早的评论
Hi all,
I have randomly generated matrix and I want to go through all columns and to sum every i-th column separately. I don't want to sum all the columns but to sum depending on the counter in for loop for example:
[a,b] = size(C);
for i = 1:b
S = sum(C(:,i))
S = 0 %but this doesn't work, result is sum of elements of all columns
0 个评论
采纳的回答
Zikobrelli
2014-6-12
Try sum(A(:,[1 4]))
where A is your random matrix.The line above will give you the sums of column 1 and 4.
ex: A=spiral(4)
sum(A(:,[1 4]))
ans = 34 46
8 个评论
Zikobrelli
2014-6-12
You're using randi(generates random integer numbers) to build your matrix. then you add a last line (1:10) which means that you can NEVER have an all zeros column ,because the last line does not contain 0 Which means that the ONLY way to enter the if statement is to get an all ones column, which indeed does not happen often. The code works, you just need to run the program enough or choose a more suited matrix :)
更多回答(2 个)
Roger Stafford
2014-6-12
S = sum(C(:,i:i:end),1);
This results in a row vector, S, consisting of the sum of every i-th column of C, as requested. It is not clear where you want the i-spaced columns to start. This starts at the i-th column. If you want them to start at the first column, change "i:i:end" to "1:i:end".
Jos (10584)
2014-6-12
sumColsC = sum(C,1)
NotInteresting = sumColsC == 0 | sumColsC == size(C,2)
sumColsC(NotInteresting) = []
3 个评论
Zikobrelli
2014-6-12
you're generating a random matrix.So yes, sometimes, you will not enter the if condition :)
try this
v=[]; C = [randi(2,4,10)-1]
[a,b] = size(C);
for i = 1:b
if (sum(C(:,i)) == 0) || (sum(C(:,i)) == a)
'I-th column is zero or ones , move on'
else v=[v sum(C(:,i))]
end
end
Jos (10584)
2014-6-12
When you change the iterator in a for-loop, it will reset at the end
for k=1:10
disp(k) ;
k = 1 ;
disp(k) ;
end
You should be clearer about your goals. What do you mean with "move on"?
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!