1在envi中以csv格式导出roi。该文件只能包含数值(从envi导出来的时候前面有一些头文件信息,用matlab读出之前需要删除这些信息)

2matlab读取,使用csvread函数读取路径。

clc;
clear;
% close all;
%%  打开文件
%%%%%%%%%
CA1 = csvread('G:\master\high_data\fish_duzi.csv');%读取文件名及路径
Data = CA1;
%%%%%%%%%%% 作图,原始图
figure(1);
title('光谱图');
xlabel('Wavenumber(cm-1)');
ylabel('Absorbance');
hold on;
plot(Data');

3定义x_msc,跟主函数中使用的时候是一样的名字

%% 多元散射校正MSC
function [x_msc]=msc(x,xref)%function名跟文件名一致
% Multiplicative Scatter Correction
%
% [x_msc]=msc(x,xref)
%
% input
% x (samples x variables)      spectra to correct
% xref (1 x variables)         reference spectra (in general mean(x) is used)
%
% Output
% x_msc (samples x variables)  corrected spectra
%
% By Cleiton A. Nunes
% UFLA,MG,Brazil[m n]=size(x);
rs=xref;cw=ones(1,n);
mz=[];mz=[mz ones(1,n)'];mz=[mz rs'];
[mm,nm]=size(mz);
wmz=mz.*(cw'*ones(1,nm));
wz=x.*(ones(m,1)*cw);
z=wmz'*wmz;
[u,s,v]=svd(z);sd=diag(s)';
cn=10^12;
ms=sd(1)/sqrt(cn);
cs=max(sd,ms );
cz=u*(diag(cs))*v';
zi=inv(cz);
b=zi*wmz'*wz';B=b';
x_msc=x;
p=B(:,1);x_msc=x_msc-(p*ones(1,mm));
p=B(:,2);x_msc=x_msc./(p*ones(mm,1)');

4收集csv矩阵的行列,并调用x_msc.

% CA1 = csvread('G:\master\high_data\fish_duzi(1).csv');
clc;
clear;
% close all;
%%  打开文件
%%%%%%%%%
CA1 = csvread('G:\master\high_data\fish_duzi.csv');%读取文件名及路径
Data = CA1;
%%%%%%%%%%% 作图,原始图
figure(1);
title('光谱图');
xlabel('Wavenumber(cm-1)');
ylabel('Absorbance');
hold on;
plot(Data');%% 数据处理Absorbance = Data;
[Absorbance_m,Absorbance_n]=size(Absorbance);
Absorbance_mean = mean(Absorbance);
% %% 吸光度波数
% Absorbance=data; %得到吸光度
% % Absorbance=Absorbance;
% [Absorbance_m,Absorbance_n]=size(Absorbance);
% Wavenumber=data(:,1:2:end); %得到波数
% % Wavenumber=1:141;
% Absorbance_mean=mean(Absorbance);%每个样本吸光度平均% %% 多元散射校正MSC
% Absorbance_msc=msc(Absorbance,Absorbance_mean);
% figure(2);
% plot(Wavenumber,Absorbance_msc);
% %set(gca,'XDir','reverse'); % 横坐标从大到小
% title('多元散射校正MSC');
% xlabel('Wavenumber(cm-1)');
% ylabel('Absorbance');%% 多元散射校正MSC
msc_file_name =  'G:\master\high_data\newfish.csv';%导出文件名及路径
a=1
Absorbance_msc=x_msc(Absorbance,Absorbance_mean);
csvwrite(msc_file_name,Absorbance_msc,0,0);
figure(2);
title('多元散射校正MSC');
xlabel('Wavenumber(cm-1)');
ylabel('Absorbance');
hold on;
plot(Absorbance_msc');

运行结果(横轴是波长,纵轴为吸光度):

另:

SNV标准正交变换同理

1读取文件存于data

2定义snv函数

3snv(data)

snv函数:

文件名:x_snv.m
function [x_snv] = snv(x)
% Standard Normal Variate
%
% [x_snv] = snv(x)
%
% input:
% x (samples x variables) data to preprocess
%
% output:
% x_snv (samples x variables) preprocessed data
%
% By Cleiton A. Nunes
% UFLA,MG,Brazil[m,n]=size(x);
rmean=mean(x,2);
dr=x-repmat(rmean,1,n);
x_snv=dr./repmat(sqrt(sum(dr.^2,2)/(n-1)),1,n);

主函数:

% CA1 = csvread('G:\master\high_data\fish_duzi(1).csv');
clc;
clear;
% close all;
%%  打开文件
%%%%%%%%%
CA1 = csvread('G:\master\high_data\fish_duzi.csv');
Data = CA1;
%%%%%%%%%%% 作图,原始图
figure(1);
title('光谱图');
xlabel('Wavenumber(cm-1)');
ylabel('Absorbance');
hold on;
plot(Data');% %% 数据处理
%
% Absorbance = Data;
% [Absorbance_m,Absorbance_n]=size(Absorbance);
% Absorbance_mean = mean(Absorbance);%% 多元散射校正MSC
msc_file_name =  'G:\master\high_data\newfish.csv';
a=1
Absorbance_snv=x_snv(Data);
csvwrite(msc_file_name,Absorbance_snv,0,0);
figure(2);
title('标准正交变换SNV');
xlabel('Wavenumber(cm-1)');
ylabel('Absorbance');
hold on;
plot(Absorbance_snv');

运行结果:

读取csv格式高光谱文件,并预处理。相关推荐

  1. Android 读取csv格式数据文件

    前言 什么是csv文件呢?百度百科上说 CSV是逗号分隔值文件格式,也有说是电子表格的,既然是电子表格,那么就可以用Excel打开,那为什么要在Android中来读取这个.csv格式的文件呢?因为现在 ...

  2. 读取BIL格式高光谱数据——C/C++

    在上一篇博客中,我们提到如何读取头文件.这篇博客将要谈到如何进一步读取高光谱数据本身,这里以BIL格式为例. 什么是BIL呢?BIL的全称为Band Interleave by Line,连续保存的是 ...

  3. CSV格式的文件与EXCEL文件的区别

    CSV格式的文件与EXCEL文件的区别 Excel CSV 这是一个二进制文件,它保存有关工作簿中所有工作表的信息 CSV代表Comma Separated Values .这是一个纯文本格式,用逗号 ...

  4. java代码将csv格式的文件导入数据库

    java代码将csv格式的文件导入数据库 最近接到了一个需求,将csv文件的内容通过java进行入库操作,在此记录一下整个完整的代码 主要逻辑 读取csv的每一个数据,对数据对应的对象赋值,将对象放入 ...

  5. C# 读取CSV和EXCEL文件示例

    我们习惯了直接连到数据库上面读取数据表的数据内容: 如果有一天我们需要读取CSV,EXCEL文件的内容的时候,可不可以也像读数据表的方式一样呢?当然可以,使用OleDB ADO.NET是很简单的事情 ...

  6. php导出csv_原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】

    本文实例讲述了原生PHP实现导出csv格式Excel文件的方法.分享给大家供大家参考,具体如下: 效果图 源码分析 index.php require_once "./Export.php& ...

  7. ajax读取文件数据,Ajax 实现读取 properties 格式资源文件数据

    Ajax 的核心是 JavaScript 对象 XmlHttpRequest.该对象在 Internet Explorer 5 中首次引入,它是一种支持异步请求的技术.简而言之,XmlHttpRequ ...

  8. mysql数据导入导出 CSV格式_导出mysql的数据为csv格式的文件

    Mysql自带数据导出的命令 into outfile(本地导出) SELECT * FROM server_warning_repaired into outfile '/tmp/test.csv' ...

  9. Java读取UTF-8格式txt文件第一行出现乱码及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法(转载)...

    原文地址:http://blog.csdn.net/jackpk/article/details/5702964/ Java读取UTF-8的txt文件第一行出现乱码"?"及解决 t ...

最新文章

  1. jquery 的3D Carousel插件参数说明
  2. android 启动过程
  3. 跨链Cosmos(9)异构跨链交易流程
  4. java intfilter_Java IntStream filter()用法及代码示例
  5. 最年轻图灵奖女性得主:谁说女的数学都比男的差
  6. flowable实战(四)flowable任务实例管理接口
  7. 深圳某集团招聘信息安全工程师
  8. C++:编译实验之递归下降分析器
  9. 技术人的充电时刻,200分钟QA交流,尽在SDCC 2017·深圳站
  10. 我的世界基岩版json_我的世界 基岩版:官方服务器配置与使用
  11. CMDN创新应用:果库 - 帮助你发现喜欢的商品
  12. 利用栈将递归转换为非递归的方法
  13. python中常用的模块(cleandar模块,time模块,datetime模块,OS模块,shutil()模块,random模块)
  14. android nougat honr7,华为荣誉8将于2月获得带有EMUI 5.0的Android 7.0牛轧糖
  15. 深入理解MVC和jstl
  16. python解决八数码问题_A*算法解决15数码问题_Python实现
  17. 超实用的仓储成本控制手段
  18. TCP SYN扫描分析探密
  19. aaPanel安装教程——宝塔面板国际版
  20. 第一章 逃跑

热门文章

  1. 基于Flask的微电影管理1(项目结构、引入蓝图)
  2. 海外版tiktok直播带货可以挂虾皮链接吗?
  3. 20200205B组T3PPMM
  4. 传播智客学习笔记--L26 深入认识Intent
  5. XML电子口岸自动报关项目 下载
  6. 我,上市公司副总裁,裸辞创业!发现职场最残酷的真相....
  7. java计算机毕业设计景区门票系统源程序+mysql+系统+lw文档+远程调试
  8. Python—入门例程(持续更新)
  9. 央求祈求请求的区别_解答近义词央求(央求近义词是哀求)
  10. gTasks Pro for Mac(谷歌任务管理器)