MATLAB程序设计课后作业二

作业1: 利用randn 建立一个1000个数的数组, 任意选定一个数*10 作为异常值,编制三 倍标准差法程序,选出该值。

x = randn(1000,1);
x(183) = x(183) * 10;
%计算均值和标准差
mu = mean(x);
sigma = std(x);
% 计算上下限
upper = mu + 3 * sigma;
lower = mu - 3 * sigma;
% 找出超过上下限的异常值的索引
outliers = find(x > upper | x < lower);
% 打印结果
disp('异常值的索引是:')
disp(outliers)
disp('异常值是:')
disp(x(outliers))

作业2:学习 interp1 函数, 对于作业1中异常值位置,利用interp1 进行插值运算,填充异 常值为较为合理的结果。

clc;clear;close all;
x = randn(1000,1);
x = unique(x);
x(183) = x(183) * 10;
mu = mean(x);
sigma = std(x);
upper = mu + 3 * sigma;
lower = mu - 3 * sigma;
outliers = find(x > upper | x < lower);
%承接作业一的代码
v = x; 
x(outliers) = [];
v(outliers) = [];
% 使用interp1函数在异常值位置进行插值
xq = outliers; 
vq = interp1(x,v,xq,'spline'); 
% 用插值结果替换异常值
x(outliers) = xq;
v(outliers) = vq; 
disp(x);

作业3: 学习mapminmax、zscore 两个数据规范化函数。 对于作业2中填补插值的数组, 利用mapminmax 映射到[0 1] 区间; 利用zscore 进行数组的零-均值规范化。 利用plot (x,y) 画作业二和作业三结果的三组数据。其中x 是数据点个数数组,y为绘图数据

clc;clear;close all;
x = randn(1000,1);
x = unique(x);
x(183) = x(183) * 10;
mu = mean(x);
sigma = std(x);
upper = mu + 3 * sigma;
lower = mu - 3 * sigma;
outliers = find(x > upper | x < lower);
%承接作业一的代码
v = x; 
x(outliers) = [];
v(outliers) = [];
% 使用interp1函数在异常值位置进行插值
xq = outliers; 
vq = interp1(x,v,xq,'spline'); 
% 用插值结果替换异常值
x(outliers) = xq;
v(outliers) = vq; 
%承接作业二的代码
% 使用 mapminmax 函数将 x 映射到 [0,1] 区间
[y1,ps1] = mapminmax(x,0,1);
% 使用 zscore 函数进行数组的零-均值规范化
[y2,mu,sigma] = zscore(x);
% 使用 plot 函数画作业二和作业三结果的三组数据
n = length(x); % 数据点个数
plot(1:n,x,'r',1:n,y1,'g',1:n,y2,'b'); % 用不同颜色的线条绘制三组数据
legend('原始数据','最大最小归一化','Z-score标准化'); % 添加图例
xlabel('数据点个数'); % 添加 x 轴标签
ylabel('绘图数据'); % 添加 y 轴标签
title('作业二和作业三结果的对比'); % 添加标题

你可能感兴趣的:(matlab,人工智能,开发语言)