我是靠谱客的博主 默默钢笔,最近开发中收集的这篇文章主要介绍matlab iddata函数,Matlab程序中temp(ic)= [data id]= out(ir) = Data(ir,id);这三句看不懂 程序为求Data每行出现最多的数...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Matlab程序中temp(ic)= [data id]= out(ir) = Data(ir,id);这三句看不懂 程序为求Data每行出现最多的数

mip版  关注:212  答案:2  悬赏:50

解决时间 2021-01-24 03:28

4dd9376cdd3332a7e9d60f5df3c60769.png

已解决

2021-01-23 02:45

Data = [1 2 3 2 2;

4 3 1 5 4;

3 5 1 2 1;

3 3 1 1 3];

for ir = 1:size(Data,1)%行数

for ic = 1:size(Data,2)%列数

temp(ic) = size(find(Data(ir,:) == Data(ir,ic)),2);

end

[data id] = max(temp,[],2);

out(ir) = Data(ir,id);

end

out'

最佳答案

03e30a71d3aabd53777c565e85a2320b.png

2021-01-23 03:45

1、第一句:

temp(ic) = size(find(Data(ir,:) == Data(ir,ic)),2);

以ir=1,ic=2为例说明

>> Data(1,:)%第一行所有的数

ans =

1 2 3 2 2

>> Data(1,2)%第一行第二列的数

ans =

2

>> find(Data(1,:) == Data(1,2))%找出 “Data(1,:)中大小为Data(1,2)的数” 所在的列的序号

ans =

2 4 5

>> size(find(Data(1,:) == Data(1,2)),2)%计算 “Data(1,:)中大小为Data(1,2)的数” 的数目

ans =

3

2、第二句:

C = max(A,[],dim) returns

the largest elements along the dimension of A specified

by scalar dim. For example, max(A,[],1) produces

the maximum values along the first dimension (the rows) of A.

[C,I] = max(...) finds

the indices of the maximum values of A, and returns

them in output vector I. If there are several identical

maximum values, the index of the first one found is returned.

[data id] = max(temp,[],2);%求出temp每行最大的数data ,并返回该数的序号id

3、第三句

out(ir) = Data(ir,id); %ir为行数,id为出现最多次数的数所在的列

全部回答

26fdc9be1fc9b1e42168acceacc8c33c.png

1楼

2021-01-23 04:37

temp(ic) = size(find(Data(ir,:) == Data(ir,ic)),2);

find(Data(ir,:) == Data(ir,ic)) 返回第ir行 中和 第ir行ic列相同的元素的下标

有一个相同,find就返回一个下标,有n个相同,就返回n个下标

再用size(find(...),2)统计find到的个数

因此在内曾循环结束后

temp是个长度和原来矩阵列数一样的向量

第一个数纪律ir行中,与ir行1列相同的元素的个数

第二个数纪律ir行中,与ir行2列相同的元素的个数,依次类推

内层循环结束后,再根据temp找出出现最多的数

[data id] = max(temp,[],2);

max寻找temp中最大的数,数值返回给data,下标位置返回给id

由于max无论有多少个相同的最大值,只返回一个最大值

所以返回data和id都只是一个数,而data还没有用,我们只需要id

out(ir) = Data(ir,id);

输出的第ir个数 赋值为Data的第ir行,id列的数

由于之前的工作已经确定,第ir行,重复最多的数的列下标是id

所有Data(ir,id)就是ir行,出现最多的数把它赋值给out(ir)

外循环也结束的时候,所有行都统计完成

out(1) 就是第1行出现最多的数

out(2) 就是第2行出现最多的数

依次类推

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

点此我要举报以上信息!

推荐资讯

大家都在看

最后

以上就是默默钢笔为你收集整理的matlab iddata函数,Matlab程序中temp(ic)= [data id]= out(ir) = Data(ir,id);这三句看不懂 程序为求Data每行出现最多的数...的全部内容,希望文章能够帮你解决matlab iddata函数,Matlab程序中temp(ic)= [data id]= out(ir) = Data(ir,id);这三句看不懂 程序为求Data每行出现最多的数...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部