读取csv格式高光谱文件,并预处理。
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格式高光谱文件,并预处理。相关推荐
- Android 读取csv格式数据文件
前言 什么是csv文件呢?百度百科上说 CSV是逗号分隔值文件格式,也有说是电子表格的,既然是电子表格,那么就可以用Excel打开,那为什么要在Android中来读取这个.csv格式的文件呢?因为现在 ...
- 读取BIL格式高光谱数据——C/C++
在上一篇博客中,我们提到如何读取头文件.这篇博客将要谈到如何进一步读取高光谱数据本身,这里以BIL格式为例. 什么是BIL呢?BIL的全称为Band Interleave by Line,连续保存的是 ...
- CSV格式的文件与EXCEL文件的区别
CSV格式的文件与EXCEL文件的区别 Excel CSV 这是一个二进制文件,它保存有关工作簿中所有工作表的信息 CSV代表Comma Separated Values .这是一个纯文本格式,用逗号 ...
- java代码将csv格式的文件导入数据库
java代码将csv格式的文件导入数据库 最近接到了一个需求,将csv文件的内容通过java进行入库操作,在此记录一下整个完整的代码 主要逻辑 读取csv的每一个数据,对数据对应的对象赋值,将对象放入 ...
- C# 读取CSV和EXCEL文件示例
我们习惯了直接连到数据库上面读取数据表的数据内容: 如果有一天我们需要读取CSV,EXCEL文件的内容的时候,可不可以也像读数据表的方式一样呢?当然可以,使用OleDB ADO.NET是很简单的事情 ...
- php导出csv_原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
本文实例讲述了原生PHP实现导出csv格式Excel文件的方法.分享给大家供大家参考,具体如下: 效果图 源码分析 index.php require_once "./Export.php& ...
- ajax读取文件数据,Ajax 实现读取 properties 格式资源文件数据
Ajax 的核心是 JavaScript 对象 XmlHttpRequest.该对象在 Internet Explorer 5 中首次引入,它是一种支持异步请求的技术.简而言之,XmlHttpRequ ...
- mysql数据导入导出 CSV格式_导出mysql的数据为csv格式的文件
Mysql自带数据导出的命令 into outfile(本地导出) SELECT * FROM server_warning_repaired into outfile '/tmp/test.csv' ...
- Java读取UTF-8格式txt文件第一行出现乱码及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法(转载)...
原文地址:http://blog.csdn.net/jackpk/article/details/5702964/ Java读取UTF-8的txt文件第一行出现乱码"?"及解决 t ...
最新文章
- jquery 的3D Carousel插件参数说明
- android 启动过程
- 跨链Cosmos(9)异构跨链交易流程
- java intfilter_Java IntStream filter()用法及代码示例
- 最年轻图灵奖女性得主:谁说女的数学都比男的差
- flowable实战(四)flowable任务实例管理接口
- 深圳某集团招聘信息安全工程师
- C++:编译实验之递归下降分析器
- 技术人的充电时刻,200分钟QA交流,尽在SDCC 2017·深圳站
- 我的世界基岩版json_我的世界 基岩版:官方服务器配置与使用
- CMDN创新应用:果库 - 帮助你发现喜欢的商品
- 利用栈将递归转换为非递归的方法
- python中常用的模块(cleandar模块,time模块,datetime模块,OS模块,shutil()模块,random模块)
- android nougat honr7,华为荣誉8将于2月获得带有EMUI 5.0的Android 7.0牛轧糖
- 深入理解MVC和jstl
- python解决八数码问题_A*算法解决15数码问题_Python实现
- 超实用的仓储成本控制手段
- TCP SYN扫描分析探密
- aaPanel安装教程——宝塔面板国际版
- 第一章 逃跑
热门文章
- 基于Flask的微电影管理1(项目结构、引入蓝图)
- 海外版tiktok直播带货可以挂虾皮链接吗?
- 20200205B组T3PPMM
- 传播智客学习笔记--L26 深入认识Intent
- XML电子口岸自动报关项目 下载
- 我,上市公司副总裁,裸辞创业!发现职场最残酷的真相....
- java计算机毕业设计景区门票系统源程序+mysql+系统+lw文档+远程调试
- Python—入门例程(持续更新)
- 央求祈求请求的区别_解答近义词央求(央求近义词是哀求)
- gTasks Pro for Mac(谷歌任务管理器)