-4

可能重复:
在另一列中添加具有特定条件的一列,如 excel 的 sumifs

在这里,我想计算第 2 列的数量,在第 1 列中具有相同的条件,我在这里再次指示,

A=[1 2;2 3;3 4;3 2;4 3;5 4;5 2;6 3;7 2;8 3]

现在我想在第 2 列中计算 2、3 和 4 的数量,条件是当第 1 列的范围从 0 到 3、3 到 6、6 到 9、9 到 12 时。

答案是这样的

范围 no2, no3, no4

0到3-- 2-----1--------1

3 到 6----1--------2--------1

6到9---1-----1------0

帮帮我,,,, 等待你的回复..

4

2 回答 2

0

你可能会做这样的事情:

for(n=1:size(A,1))
    if(A(n,1) >= 0 && A(n,1) < 3)
        % Do something
    elseif( ) % next test condition
        % Do something there.
    end 
end

另一种选择是使用 for 循环遍历您的第一列,并使用 switch 语句根据该输入提取适当的操作。

更新如下:

for(n = 1:size(A,1))
    switch(mod(A(n,1),3))
        case 0 % this will be 0, 1, 2 in your column
            % code
        case 1
            etc...
    end
end

matlab中的模数信息

matlab中关于开关的信息

于 2012-07-09T13:30:28.157 回答
0

使用 MATLAB,您可以使用逻辑索引,这意味着您可以使用任意数量的条件过滤变量。例如,如果vec是任何向量并且您想知道有多少元素vec是负数,您可以执行以下操作,

% save the elements of vec which are negative
ind = vec < 0
% vec is a logical variable. Each element of vec lower that 0 is store as 1.
% to know how many elements of vec are smaller than 0
sum(ind)
% will tell you how many ones are there in ind, meaning the number of elements in vec which
% are smaller than 0

% Of course you can do the same all at once,
sum(vec < 0)
% and you can directly access the elements in the same way
vec(vec < 0)

所以回到你的问题,你可以使用类似的东西,

for i = 1:3:length(A)
    %print how many 2s,3s and 4s
    fprintf('%d to %d: %d, %d, %d\n',i,i+2,sum(A(i:i+2,2)==2),sum(A(i:i+2,2)==3),sum(A(i:i+2,2)==4))
end
于 2012-07-09T14:11:45.730 回答