1054. The Dominant Color (20)-PAT

1054. The Dominant Color (20)

时间限制
100 ms
内存限制
32000 kB
代码长度限制
16000 B
判题程序
Standard

Behind the scenes in the computer's memory, color is always talked about as a series of 24 bits of information for each pixel. In an image, the color with the largest proportional area is called the dominant color. A strictly dominant color takes more than half of the total area. Now given an image of resolution M by N (for example, 800x600), you are supposed to point out the strictly dominant color.

Input Specification:

Each input file contains one test case. For each case, the first line contains 2 positive numbers: M (<=800) and N (<=600) which are the resolutions of the image. Then N lines follow, each contains M digital colors in the range [0, 224). It is guaranteed that the strictly dominant color exists for each input image. All the numbers in a line are separated by a space.

Output Specification:

For each test case, simply print the dominant color in a line.

Sample Input:
5 3
0 0 255 16777215 24
24 24 0 0 24
24 0 24 24 24
Sample Output:
24
推荐指数:※※
来源:http://pat.zju.edu.cn/contests/pat-a-practise/1054
这道题目想到了方法就很简单,正好,我看过编程之美2.3寻找发帖”水王“,这一题只是壳子不同,输入的时候不相同的互相抵消,多余一半的肯定不会被抵消完的。通俗的来说:有一个椅子,有很多teams都想坐上去,每个team各个队员的战斗力是一样的(不同team队员遇到1:1消失),同样的成员都会在椅子上。现在所有人混在一起,排成一大队一个一个的去抢椅子,如果有一个team的队员大于总队员一半,1:1战斗完后剩下的一定是他的队员。
不然用map也可以。
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
	int m,n;
	scanf("%d%d",&m,&n);
	int i,j,candidate,ntimes=0;
	for(i=0;i<m;i++){
		for(j=0;j<n;j++)
		{
			int color;
			scanf("%d",&color);
			if(ntimes==0){
				candidate=color;
				ntimes++;
			}
			else
			{
				if(candidate==color)
					ntimes++;
				else
					ntimes--;
			}
		}
	}
	printf("%d\n",candidate);
	return 0;
}


利用matlab识别[-37.6141564375877 -44.8934318146598 -68.5395102231449 -105.998636800599 -39.0202173875387 -15.0676705979633 -70.0289155856468 -89.6183719712618 -31.4998736017068 -65.6706070347323 -52.2954712582728 -25.0007417656538 -62.0175753680824 -52.4505190780410 -36.7998214080831 -66.8240803995901 -89.7310248077318 -89.4476631841424 -95.0631484078666 -45.4266150893948 -71.4268623418806 -87.7389305484529 -90.7689607725678 -89.4482765744236 -63.4873672376004 -50.5822037813285 -89.0051497735307 -104.630351899095 -71.8133034594315 -87.1409454746534 -101.322624957044 -96.8859043636271 -107.236700645133 -102.635430504787 -85.8695232644000 -88.0600512107977 -91.2951358823337 -74.5224644056697 -81.4289479344271 -92.8546062893397 -64.3662613256191 -60.7190970833584 -3.55577647563955 -44.7515582179228 -55.2621821199571 -58.1191843564058 -64.7337352687441 -58.0577833197574 -46.8047623917448 -45.1175093264491 -46.4333171948036 -57.5279718954082 5.02150694070810 -23.4266564799937 -0.389119636882192 10.3895229106278 3.83098733011624 -1.66067566291584 7.99355669801910 19.6746491807298 26.0543573655568 15.3122579508032 13.5242208685403 2.98885682332441 13.4193364621863 2.55985415353877 60.7869486491908 -7.19843777126744 50.0025300398218 -19.2306656104956 84.7794322602891 45.4102510636858 116.883089912579 102.259133619137 14.0774708419592 28.4068229352914 27.8204958611579 31.4538966828311 93.2036965898183 -2.61208839117787 -38.6618143537309 -23.3092017890169 -15.6724244605204 -37.2371241010961 20.3178013223489 49.1877327947727 -16.3352241625370 44.4518673391411 34.8328106589607 -3.39617598124692 4.22761052220510 -127.033670095793 -106.268209096416 -86.7501347324323 -44.1581155090221 -89.0199577753159 -75.9603939084827 -78.8226974792923 -103.391357116246 -115.267742416180 -45.1877231021113 -89.3961504838651 -51.5825019761869 -55.0672415959877 -62.6021257843332 -63.5984516565330 -65.8130844153139 -58.2838155448689 -93.8797357975003 -73.5215320794161 -116.822323814052 -62.761410181]的特征
最新发布
03-15
<think>嗯,用户想用MATLAB进行数据分析和特征提取。首先,我需要整理一下处理这类任务的一般步骤。根据之前的引用内容,比如引用[1]提到FFT分析和滤波,引用[2]涉及时频特征提取和分类,引用[3]是关于锂电池数据集的分析,这些都可以作为参考。 首先,数据导入是关键。用户可能需要从不同的文件格式导入数据,比如CSV、Excel或者MAT文件。MATLAB有相应的函数,比如readtable、xlsread和load。这部分需要确保数据正确加载,并且处理可能的缺失值或异常值,使用函数如rmmissing或fillmissing。 接下来是数据预处理。包括标准化或归一化,这可以通过zscore或mapminmax实现。滤波也是常见的步骤,比如使用低通滤波器去除噪声,引用[1]中的FFT分析可能在这里派上用场,帮助用户理解信号的频率成分。 然后是特征提取。时域特征如均值、方差、峰峰值;频域特征如FFT得到的频谱,引用[1]和[2]都提到了FFT和频谱分析。时频分析比如小波变换,可能用于更复杂的特征提取,比如提取小波系数作为特征,引用[2]中的时频特征应该就是这类方法。 特征选择部分,可以使用统计方法如t-test或PCA降维,这些能帮助减少特征维度,提高模型效率,引用[2]中的朴素贝叶斯分类可能需要有效的特征选择来提升性能。 可视化分析也很重要,绘图帮助用户直观理解数据分布和特征,比如时域波形图、频谱图,引用[3]中提到的绘制不同数据曲线,说明用户可能需要调整代码来生成所需的图表。 最后是应用实例,比如故障诊断或信号分类,结合引用[2]中的轴承数据分类,可以举例说明如何将提取的特征用于分类模型。同时,注意代码示例的提供,让用户能够直接参考和修改。 用户可能的需求不仅仅是步骤,还需要具体的代码示例和实际应用场景。例如,他们可能在使用FFT进行频谱分析时遇到问题,或者在特征选择时不确定哪种方法更合适。需要确保回答覆盖这些方面,并且引用相关的参考资料来增强可信度。同时,用户可能对数据预处理中的异常值处理或滤波参数设置有疑问,应该提到相关函数和注意事项。</think>以下是如何使用MATLAB进行数据分析和特征提取的步骤说明,结合了信号处理、统计分析和机器学习方法: ### 一、数据导入与预处理 1. **数据加载** ```matlab % 从CSV/Excel导入 data = readtable('dataset.csv'); % 或加载MAT文件 load('dataset.mat'); ``` *注意:需检查数据维度`size(data)`和缺失值`sum(ismissing(data))`[^3] 2. **数据清洗** ```matlab % 去除缺失值 clean_data = rmmissing(raw_data); % 标准化处理 normalized_data = zscore(clean_data); ``` ### 二、时域特征提取 ```matlab % 基本统计量 mean_val = mean(signal); std_val = std(signal); kurtosis_val = kurtosis(signal); % 高级特征 [peak_val,peak_loc] = findpeaks(signal); % 峰值检测 rms_val = rms(signal); % 有效值 ``` ### 三、频域特征提取(FFT分析) 1. **频谱分析**[^1] ```matlab Fs = 1000; % 采样频率 L = length(signal); Y = fft(signal); P2 = abs(Y/L); P1 = P2(1:L/2+1); P1(2:end-1) = 2*P1(2:end-1); f = Fs*(0:(L/2))/L; plot(f,P1) % 绘制频谱图 xlabel('频率 (Hz)') ``` 2. **谐波分析** ```matlab [max_amp, dominant_freq] = max(P1); % 提取主频 ``` ### 四、时频分析(适用于非平稳信号) ```matlab % 小波变换示例 [c,l] = wavedec(signal,5,'db4'); approx = appcoef(c,l,'db4'); [cd1,cd2,cd3,cd4,cd5] = detcoef(c,l,[1 2 3 4 5]); % 获取细节系数 ``` ### 五、特征选择与降维 1. **PCA分析** ```matlab [coeff,score,latent] = pca(feature_matrix); cum_var = cumsum(latent)./sum(latent); % 计算累计贡献率 ``` 2. **相关性筛选** ```matlab [R,P] = corrcoef(feature_matrix); % 特征相关性矩阵 ``` ### 六、可视化分析 ```matlab % 时域/频域对比图 subplot(2,1,1) plot(t,signal) subplot(2,1,2) plot(f,P1) % 特征分布直方图 histogram(feature_vector,'BinWidth',0.5) ``` ### 七、应用实例(以轴承故障诊断为例)[^2] ```matlab % 时频特征提取流程 features = []; for i = 1:num_samples wt_coeffs = wavedec(data(i,:),5,'db4'); % 小波分解 features(i,:) = [mean(wt_coeffs), std(wt_coeffs), kurtosis(wt_coeffs)]; end % 朴素贝叶斯分类 model = fitcnb(features,labels); cvmodel = crossval(model,'KFold',5); loss = kfoldLoss(cvmodel); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值