使用MATLAB分析处理csv数据

2023-10-27

MATLAB加载csv文件的4种方法

1 使用csvread函数

csvread()函数有三种使用方法:

 M = csvread('filename')
 M = csvread('filename', row, col)
 M = csvread('filename', row, col, range)

第一种方法中,直接输入文件名,将数据读到矩阵M中。这里要求csv文件中只能包含数字

第二种方法中,除了文件名,还指定了开始读取位置的行号(row)和列号(col)。
**这里,行号、列号以0开始计数。**也就是说,row=0, col=0表示从文件中第一个数开始读。

第三种方法中,range限定了读取的范围。range = [R1 C1 R2 C2],这里(R1,C1)是读取区域的左上角,(R2,C2)是读取区域的右下角。在使用这种方法时,要求row, col等于range中的前两项。

注意:csv文件中的空项,读到矩阵中时,会初始化为0.

2 使用importdata函数

importdata('myfile.cvs')

前提条件是,都是数据格式

3 使用load函数

B = load('data.csv')

前提条件是,都是数据格式

4 直接拖到Matlab的工作区

如果文件中全部都是数据的话,可以直接将数据拖动到Matlab的工作区内。

在保证所有数据都被选中的情况下,在工具栏的“导入的数据”中选择要导入数据的类型,如果全部为数据,则可以导出为列矢量或者数值矩阵。

参考:MATLAB读取cvs文件的几种方法


用MATLAB对csv数据进行滤波插值制表

1 MATLAB加载csv文件,合并数据

由于csv文件中含有字符串信息,所以采取第一种方法,注意,第一个元素的位置是(0,0)!在MATLAB中输入:

AutoPilotMat = csvread('auto_pilot_enabled__info.csv',1,0);

得到csv中的数据矩阵
在这里插入图片描述

依次读取所有数据,并整合到一个矩阵中

AutoPilotMat = csvread('auto_pilot_enabled__info.csv',1,0);
FollowExpectMat = csvread('follow_expect_value_data.csv',1,0);
FollowRealMat = csvread('follow_real_value_data.csv',1,0);
FollowMatRaw = [AutoPilotMat(:,:),FollowExpectMat(:,2),FollowRealMat(:,2)];

2 MATLAB滤波和插值

然后提取属于自动驾驶部分的有效数据,进行滤波(除去200米的数据),除去之后用左右两边的数据来进行线性插值,要注意查找左右两边数据的时候,不要超出边界,查找边界的处理逻辑为:

if (200 == M(i,2))
        % search left side to find valid value
        left = i;
        leftEdgeFlag = 0;
        while( M(left,2) == 200 )            
            % if go to the edge, set leftEdgeFlag, then break
            if (1 == left)
                leftEdgeFlag = 1;
                break;
            else
                left = left-1;  
            end
        end
        leftValidValue = M(left,2);
end

线性插值的逻辑为:

 distanceLeft = i-left;
 distanceRight = right-i;
 distanceTotal = right-left;
 weightCoefficient = [distanceLeft/distanceTotal,distanceRight/distanceTotal];
 estimateValue = [leftValidValue,rightValidValue]*weightCoefficient';

3 MATLAB绘制图表

最后画图,添加说明信息:

% start to figure
figure;
% plot expected follow distance with green lines
plot(M(:,1),'g');
hold on;
% plot real follow distance with red lines
plot(M(:,2),'r');
% add label, title and legends
xlabel('frame','Fontsize',12);
ylabel('distance(m)','Fontsize',12);
title('Follow Distance Offset','Fontsize',18)
legend('expect follow distance','real follow distance')

得到:
在这里插入图片描述

4 附录——MATLAB完整代码

完整MATLAB代码:

% function:     1, parse the csv files, reorgnize csv files
%               2, filter data and renew the error value
%               3, plot figure to analysis expected follow distance vs
%                  real follow distance
% contributor:  liukai
% version:      v1.0
% last modify time:     2019.05.22.15.04

clear all;
close all;
clc;

AutoPilotMat = csvread('auto_pilot_enabled__info.csv',1,0);
FollowExpectMat = csvread('follow_expect_value_data.csv',1,0);
FollowRealMat = csvread('follow_real_value_data.csv',1,0);

% merge all these data
FollowMatRaw = [AutoPilotMat(:,:),FollowExpectMat(:,2),FollowRealMat(:,2)];
% auto pilot is on from row 7026
% extract auto pilot data, first column = follow_expect, secend column =
% follow_real
AutoPilotFollowMat = FollowMatRaw(7026:8495,3:4);
% filt data which is 200, use average data to replace it
M = AutoPilotFollowMat;
for i = 1:size(M,1)
    if (200 == M(i,2))
        % search left side to find valid value
        left = i;
        leftEdgeFlag = 0;
        while( M(left,2) == 200 )            
            % if go to the edge, set leftEdgeFlag, then break
            if (1 == left)
                leftEdgeFlag = 1;
                break;
            else
                left = left-1;  
            end
        end
        leftValidValue = M(left,2);
        
        % search right side to find valid value
        right = i;
        while( M(right,2) == 200 )
            % if go to the edge, set rightEdgeFlag, then break
            if ( size(M,1) == right)
                rightEdgeFlag = 1;
                break;
            else
                right = right+1;  
            end              
        end
        rightValidValue = M(right,2);
        % estimate real value, linear addition
        distanceLeft = i-left;
        distanceRight = right-i;
        distanceTotal = right-left;
        weightCoefficient = [distanceLeft/distanceTotal,distanceRight/distanceTotal];
        estimateValue = [leftValidValue,rightValidValue]*weightCoefficient';
        % renew 200 with estimateValue
        M(i,2) = estimateValue;
    end
end
% filteredAutoPilotFollowMat = M;

% start to figure
figure;
% plot expected follow distance with green lines
plot(M(:,1),'g');
hold on;
% plot real follow distance with red lines
plot(M(:,2),'r');
% add label, title and legends
xlabel('frame','Fontsize',12);
ylabel('distance(m)','Fontsize',12);
title('Follow Distance Offset','Fontsize',18)
legend('expect follow distance','real follow distance')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用MATLAB分析处理csv数据 的相关文章

  • 在本地主机上使用相同的 IP 和端口创建套接字

    我在 Linux 上看到奇怪的行为 我看到远程端和本地端都显示相同的 IP 和端口组合 以下是 netstat 输出 netstat anp 网络统计grep 6102 tcp 0 0 139 185 44 123 61020 0 0 0
  • 更新Linux中的包含路径

    我的 my path to file 文件夹中有几个头文件 我知道如何将这些文件包含在新的 C 程序中 但每次我都需要在包含它之前输入头文件的完整路径 我可以在linux中设置一些路径变量 以便它自动查找头文件吗 您可以创建一个 makef
  • 如何找到平面和 3d 矩阵之间的交平面

    如果我有一堆图像并且尺寸如下 size M 256 256 124 我有 3 个点 它们的坐标是 coor a 100 100 124 coor b 256 156 0 coor c 156 256 0 如何创建 M 与这 3 个点定义的平
  • Linux shell 从用户输入中获取设备 ID

    我正在为一个程序编写安装脚本 该程序需要在其配置中使用 lsusb 的设备 ID 因此我正在考虑执行以下操作 usblist lsusb put the list into a array for each line use the arr
  • 如何在 Linux 和 C 中使用文件作为互斥体?

    我有不同的进程同时访问 Linux 中的命名管道 并且我想让此访问互斥 我知道可以使用放置在共享内存区域中的互斥体来实现这一点 但作为一种家庭作业 我有一些限制 于是 我想到的是对文件使用锁定原语来实现互斥 我做了一些尝试 但无法使其发挥作
  • CSV 解析 - Swift 4

    我正在尝试解析 CSV 但遇到一些问题 下面是我用来解析 CSV 的代码 let fileURL Bundle main url forResource test application data Sheet 1 withExtension
  • 理解高斯混合模型的概念

    我试图通过阅读在线资源来理解 GMM 我已经使用 K 均值实现了聚类 并且正在了解 GMM 与 K 均值的比较 以下是我的理解 如有错误请指出 GMM 类似于 KNN 在这两种情况下都实现了聚类 但在 GMM 中 每个簇都有自己独立的均值和
  • 如何在放置颜色条后保持子图大小不变

    假设我们有一个 1 2 子图 我们在其中绘制了一些图形 如下所示 subplot 1 2 1 surf peaks 20 subplot 1 2 2 surf peaks 20 然后我们要添加一个颜色条 colorbar 我不希望结果中的正
  • 正则表达式删除块注释也删除 * 选择器

    我正在尝试使用 bash 从 css 文件中删除所有块注释 我有以下 sed 命令的正则表达式 sed r s w s w d 这可以很好地去除块注释 例如 This is a comment this is another comment
  • 如何在 matlab 中创建由多个 3d 图像数据数组组成的数组

    我正在阅读 15 张图片imagedata imread imagename jpg 它的大小总是320 by 320 by 3 如何将数据放入数组中 使用 for for 循环 以便在访问新数组的第一个元素时获得输入的第一个图像的 RGB
  • 如何更改Plotyy第二轴的颜色和字体大小?

    我使用 MATLAB 的plotyy 函数绘制了两条曲线 AX H1 H2 plotyy voltage span amplitude voltage span Ca SR The problem is that I cannot chan
  • 如何在线程创建和退出时调用函数?

    include
  • 为什么 fork 炸弹没有使 android 崩溃?

    这是最简单的叉子炸弹 我在许多 Linux 发行版上执行了它 但它们都崩溃了 但是当我在 android 终端中执行此操作时 即使授予后也没有效果超级用户权限 有什么解释为什么它没有使 Android 系统崩溃吗 一句话 ulimit Li
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • 批量删除文件名中包含 BASH 中特殊字符的子字符串

    我的目录中有一个文件列表 opencv calib3d so2410 so opencv contrib so2410 so opencv core so2410 so opencv features2d so2410 so opencv
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • 如何在 MATLAB 中绘制 3D 曲面图?

    我有一个像这样的数据集 0 1 0 2 0 3 0 4 1 10 11 12 13 2 11 12 13 14 3 12 13 14 15 4 13 14 15 16 我想在 matlab 中绘制 3D 曲面图 使列标题位于 y 轴 行标题
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List

随机推荐

  • MATLAB R2023a完美激活版(附激活补丁)

    MATLAB R2023a是一款面向科学和工程领域的高级数学计算和数据分析软件 它为Mac用户提供了强大的工具和功能 用于解决各种复杂的数学和科学问题 以下是MATLAB R2023a Mac的一些主要特点和功能 软件下载 MATLAB R
  • 【自用】3.测试框架TestNG

    1 TestNG基本介绍 2 注解 2 1 Test package com course testng import org testng annotations Test public class BasicAnnotation 最基本
  • 为什么GPU训练网络还不如CPU快

    为什么GPU训练网络还不如CPU快 当网络规模较小的时候 GPU是无法体现出计算上的优势的 可能不光没有加速效果 反而还不如CPU训练的快 只要加大网络规模 当网络足够大的时候 GPU才能显示出它的加速效果 Pytorch官网的这篇tuto
  • 在国内怎么使用谷歌Chrome浏览器,为什么我的谷歌浏览器进去就加载失败

    START 你是不是经常听谁谁说 哎呀 你用的什么浏览器 这么laji 好慢哟 哎 我给你推荐个神器谷歌浏览器 用着贼爽 然后 你就想回去马上就下载 这不我也下载了 然后就出事了 下面跟着我的步伐一起看看吧 一 当你如获至宝的在搜索框输入关
  • 根据id进行数组的去重

    一开始用 New set 但是这种方式只对 1 2 2 3 4 这种形式的数组生效 对数组里面全是对象的话就不生效了 所以取数组里面每个对象对应的id值进行filter处理 如下 aaa 二级评论数组去重 const idMap retur
  • Servlet生命周期与工作原理

    Servlet生命周期分为三个阶段 1 初始化阶段 调用init 方法 2 响应客户请求阶段 调用service 方法 3 终止阶段 调用destroy 方法 Servlet初始化阶段 在下列时刻Servlet容器装载Servlet 1 S
  • 时间轮在Netty、Kafka中的应用

    时间轮 概述 时间轮是一个高性能 低消耗的数据结构 它适合用非准实时 延迟的短平快任务 例如心跳检测 在Netty Kafka Zookeeper中都有使用 时间轮可通过时间与任务存储分离的形式 轻松实现百亿级海量任务调度 Netty中的时
  • 关于链表的题目—leetcode

    第一题 删除链表中的指定节点 问题描述 给定单向链表的头指针和一个要删除的节点的值 定义一个函数删除该节点 返回删除后的链表的头节点 示例 1 输入 head 4 5 1 9 val 5 输出 4 1 9 解释 给定你链表中值为 5 的第二
  • 我要进大厂!

    出自公众号 大飞码字 怎样才能进大厂 我是一个二本计算机专业的学生 怎样才能进大厂 我是一个非计算机专业的学生 有机会可以进大厂吗 我收到不少咨询如何进大厂的问题 以上是一些比较典型的提问 怎么可以进大厂 这个问题 跟 怎么可以在30岁前赚
  • sqlite与mysql对比_SQLite vs MySQL vs PostgreSQL:关系型数据库比较

    自1970年埃德加 科德提出关系模型之后 关系型数据库便开始出现 经过了40多年的演化 如今的关系型数据库种类繁多 功能强大 使用广泛 面对如此之多的关系型数据库 我们应该如何权衡找出适合自己应用场景的数据库系统呢 O S Tezer最近在
  • EJBCA快速安装指南

    安装依赖项 红色的帽子 sudo yum install tar unzip java 1 8 0 openjdk devel ant psmisc mariadb bc patch 下载EJBCA并解压缩ejbca安装目录中的ZIP存档
  • 华为云云耀云服务器L实例评测

    文章目录 前言 云耀云服务器L实例介绍 什么是云耀云服务器L实例 产品优势 智能不卡顿 价优随心用 上手更简单 管理更省心 快速购买 查看优惠卷 购买 安装MySQL 重置密码 安装 更新apt的软件源列表 安装MySQL 设置用户名 密码
  • Log分析教程及例子【转】

    这次打算通过一个例子 深入解析一下log的分析方法以及Handler对象 Android多线程及MediaPlayer状态分析 一 得到log文件 ANR 出现了 开始做修改准备工作 得到log文件 有人问log文件在哪儿 一般在 data
  • 2023亚洲人才报告

    导读 从2011 年起 ABC 美好社会咨询社开始为公益组织提供人力资源方面的咨询服务 并在2017年 2021年连续发布 公益行业薪酬与人才管理实践调研报告 在过往调研中 我们看到 虽然公益行业依然存在人才吸引优势不足 专业人员保留困难行
  • Android安全风险与防范措施--Activity劫持

    Activity劫持风险与防范措施 在Android系统问世不久 曾发生过这样的事情 用户在正常输入用户名 密码的情况 账密信息缺被盗的情况 why 我们在使用银行类app时 只要我们的银行app客户端退至后台 为啥总会提示一下我们 已退至
  • 什么是全连接神经网络?

    什么是全连接神经网络 解释全连接神经网络之前我们首先需要了解什么是神经网络 人工神经网络 Artificial Neural Network ANN 简称神经网络 可以对一组输入信号和一组输出信号之间的关系进行模拟 是机器学习和认知科学领域
  • docker创建私有仓库registry,并实现pull和push操作

    私有仓库为个人构建的镜像存储 建议 etc docker daemon json里配置ali云的镜像加速 1 拉取registry 镜像 docker pull registry 2 运行registry 镜像 docker run it
  • 安装vite框架,报错“Cannot find module ‘./App.vue‘ or its corresponding type declaration” 问题解决方法

    代码编辑器 vscode 使用vue3 所以安装了 Volar 插件 可以使 vue 代码高亮显示 不同颜色区分代码块 以及语法错误提示等 提示 如果使用的是vue2 则使用 Vetur 插件 使用 vue3 的话 要禁用 Vetur 插件
  • 定义一个线程池

    声明一个线程池 并指定线程池的名字 Bean taskExecutor public Executor asyncExecutor ThreadPoolTaskExecutor executor new ThreadPoolTaskExec
  • 使用MATLAB分析处理csv数据

    文章目录 MATLAB加载csv文件的4种方法 用MATLAB对csv数据进行滤波插值制表 1 MATLAB加载csv文件 合并数据 2 MATLAB滤波和插值 3 MATLAB绘制图表 4 附录 MATLAB完整代码 MATLAB加载cs