matlab可以完成统计某一个数出现了几次么
有一张num,里面有数据如下:0044440044444400000004004400000004004404444404004400004004044004444404...
有一张num,里面有数据如下:
0 0 4 4 4 4 0 0 4 4 4 4
4 4 0 0 0 0 0 0 0 4 0 0
4 4 0 0 0 0 0 0 0 4 0 0
4 4 0 4 4 4 4 4 0 4 0 0
4 4 0 0 0 0 4 0 0 4 0 4
4 0 0 4 4 4 4 4 0 4 0 0
4 0 0 0 0 0 4 0 0 4 0 0
4 0 0 0 4 4 4 4 4 4 0 0
1 1 1 2 2 2 3 3 3 4 4 4
其中每一行代表一个股票的成交量。最后一行代表月份。
我要求出每一个月中,每一只股票有成交记录的有几天。‘
就是说要求出:如第一行一月份有成交记录是1,二月份有成交记录是3,以此类推。
我要做出一个循环,写一个程序,使每个股票的答案都能一次性出现。
谢谢 展开
0 0 4 4 4 4 0 0 4 4 4 4
4 4 0 0 0 0 0 0 0 4 0 0
4 4 0 0 0 0 0 0 0 4 0 0
4 4 0 4 4 4 4 4 0 4 0 0
4 4 0 0 0 0 4 0 0 4 0 4
4 0 0 4 4 4 4 4 0 4 0 0
4 0 0 0 0 0 4 0 0 4 0 0
4 0 0 0 4 4 4 4 4 4 0 0
1 1 1 2 2 2 3 3 3 4 4 4
其中每一行代表一个股票的成交量。最后一行代表月份。
我要求出每一个月中,每一只股票有成交记录的有几天。‘
就是说要求出:如第一行一月份有成交记录是1,二月份有成交记录是3,以此类推。
我要做出一个循环,写一个程序,使每个股票的答案都能一次性出现。
谢谢 展开
展开全部
clear;
A = [0 0 4 4 4 4 0 0 4 4 4 4;...
4 4 0 0 0 0 0 0 0 4 0 0;...
4 4 0 0 0 0 0 0 0 4 0 0;...
4 4 0 4 4 4 4 4 0 4 0 0;...
4 4 0 0 0 0 4 0 0 4 0 4;...
4 0 0 4 4 4 4 4 0 4 0 0;...
4 0 0 0 0 0 4 0 0 4 0 0;...
4 0 0 0 4 4 4 4 4 4 0 0;...
1 1 1 2 2 2 3 3 3 4 4 4];
[h, w] = size(A);
R = zeros(h-1, max(A(h, :)));
for month = 1:max(A(h, :))
B = repmat(A(h,:) == month, h, 1);
C = (A.*B > 0)';
D = sum(C)';
R(:, month) = D(1:h-1);
end
R
结果中从列看代表月份,从行看代表股票成交记录数
结果如下:
R =
1 3 1 3
2 0 0 1
2 0 0 1
2 3 2 1
2 0 1 2
1 3 2 1
1 0 1 1
1 2 3 1
望采纳,谢谢!
A = [0 0 4 4 4 4 0 0 4 4 4 4;...
4 4 0 0 0 0 0 0 0 4 0 0;...
4 4 0 0 0 0 0 0 0 4 0 0;...
4 4 0 4 4 4 4 4 0 4 0 0;...
4 4 0 0 0 0 4 0 0 4 0 4;...
4 0 0 4 4 4 4 4 0 4 0 0;...
4 0 0 0 0 0 4 0 0 4 0 0;...
4 0 0 0 4 4 4 4 4 4 0 0;...
1 1 1 2 2 2 3 3 3 4 4 4];
[h, w] = size(A);
R = zeros(h-1, max(A(h, :)));
for month = 1:max(A(h, :))
B = repmat(A(h,:) == month, h, 1);
C = (A.*B > 0)';
D = sum(C)';
R(:, month) = D(1:h-1);
end
R
结果中从列看代表月份,从行看代表股票成交记录数
结果如下:
R =
1 3 1 3
2 0 0 1
2 0 0 1
2 3 2 1
2 0 1 2
1 3 2 1
1 0 1 1
1 2 3 1
望采纳,谢谢!
更多追问追答
追问
谢谢您的的回答。
另外我想问,要是我的要求变为
我要求出每一只股票的每一个月中总共的成交量为多少?应该怎么算呢?
就是说第一只股票的第一个月的成交量为4,第二个月为16,要求它们按月份分别叠加。
另外,我有点matlab白痴。能不能麻烦大神你稍微讲解一下?
追答
这样的话只需要稍微修改一下程序就好了:
clear;
A = [0 0 4 4 4 4 0 0 4 4 4 4;...
4 4 0 0 0 0 0 0 0 4 0 0;...
4 4 0 0 0 0 0 0 0 4 0 0;...
4 4 0 4 4 4 4 4 0 4 0 0;...
4 4 0 0 0 0 4 0 0 4 0 4;...
4 0 0 4 4 4 4 4 0 4 0 0;...
4 0 0 0 0 0 4 0 0 4 0 0;...
4 0 0 0 4 4 4 4 4 4 0 0;...
1 1 1 2 2 2 3 3 3 4 4 4];
[h, w] = size(A);
R = zeros(h-1, max(A(h, :)));
for month = 1:max(A(h, :))
B = repmat(A(h,:) <= month, h, 1);
C = (A.*B)';
D = sum(C)';
R(:, month) = D(1:h-1);
end
R
从上到下分别代表:
%输入数据
%获得数据大小
%初始化结果
%按月份循环
%将当前月份以及之前月份的所有数据记为1,之后月份的数据记为0
%AB相乘后得到当前月份以及之前月份的所有数据
%对成交量求和
%赋值给结果矩阵R
结果为:
R =
4 16 20 32
8 8 8 12
8 8 8 12
8 20 28 32
8 8 12 20
4 16 24 28
4 4 8 12
4 12 24 28
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |