MATLAB导入文本数据绘制多个曲线

https://ww2.mathworks.cn/help/matlab/ref/save.html

1 MATLAB一次画多个曲线

clc;
close all;
clear all;
file = 'E:\matlabtest\1.xls';
data = xlsread(file);
x = data(:,1);
y = data(:,2);
plot(x,y);
hold on;
file = 'E:\matlabtest\2.xls';
data = xlsread(file);
x = data(:,1);
y = data(:,2);
plot(x,y);

简单而言,就是在上次绘图完成之后,加入hold on(每次叠加画图加一次就可以,取消重新绘制,hold off);然后进行第二次绘图。当需要结束本图的绘制,进入下一副的绘制,加入代码hold off;即可。

3)关于绘图的图例,线型,可以参考网上资料。此处给出简单说明。
y 黄 - 实线 . 点 < 小于号
m 紫 : 点线 o 圆 s 正方形
c 青 -. 点划线 x 叉号 d 菱形
r 红 - - 虚线 + 加号 h 六角星
g 绿 * 星号 p 五角星
b 蓝 v 向下三角形
w 白 ^ 向上三角形
k 黑 > 大于号

例如,输入,然后查看图形形状:

>> plot(x,y1,'r+-',x,y2,'k*:')

2 subplot的功能

子图将当前数字划分为按行编号的矩形窗格。 每个窗格都包含一个轴对象,您可以使用轴属性来操作它们。 随后的图被输出到当前窗格。
h =subplot(m,n,p)
m 代表行
n 代表列
p 代表的这个图形画在第几行、第几列。

subplot的使用方法:

h =subplot(m,n,p)

将数字窗口分成m×n的网格,

并在当前图的第p个位置创建一个轴对象,并返回轴句柄。

坐标轴沿着图形窗口的第一行,然后是第二行等。

例如 subplot(2,2,1)

表示一个2行2列的画布上,你用第一行第一列画图。

3 matlab之导入txt文件并取其中一列数据

  1. 首先确保Matlab当前所在文件夹为txt文件所在文件夹,然后命令行执行:

X = load(‘2019_03_21_08_59_07_fitness.txt’);

即将txt数据存入一个X矩阵。

之后我们取这个矩阵的第一列数据和第二列数据:

a =X(:,1);

b =X(:,2);

取好之后以第一列为横坐标,第二列为纵坐标画图:

plot(a,b);

MATLAB对矩阵的操作十分灵活,下面对最近遇到的进行总结:

格式A(m,n),用于提取矩阵A中符合m,n要求的部分

1、提取某个元素,则m,n为数字标量,如A(2,3)为第二行第三列的元素。

2、提取某行某列

  A(:,n)提取第n列的所有元素,如A(:,3)提取第三列的所有元素;

  A(m,:)提取第m行的所有元素,如A(3,:)提取第三行的所有元素;

3、提取任意的某部分并重新组成新的矩阵,连续或不连续,单调或不单调

 数字指定:A([1 2 3 4],[2 3]) 返回1 2 3 4行2 3 列的数据;

 步长指定:A(1:2:end,:) A(2:2:end,:)分别提取矩阵A的奇数行和偶数行数据;

                 A(end:-1:1,:) A(:,end:-1:1)分别返回A矩阵行倒序和列倒序的矩阵

 变量指定:A(B(:,1),:),其中B的第一列含有数据,用来指定取矩阵A的哪些行。

4、变量指定,假设一个矩阵X1中存储的是坐标,用矩阵X1的坐标访问矩阵labels_left中对应的元素:

  for i = 1:size(X1,1)
       x = labels_left(X1(i,2),X1(i,1));%匹配对1在左图中的label数
  end

4 求数组的平均数或者均值

1、函数功能
求数组的平均数或者均值
2、使用方法
① M = mean(A)
返回沿数组中不同维的元素的平均值。
如果A是一个向量,mean(A)返回A中元素的平均值。
如果A是一个矩阵,mean(A)将其中的各列视为向量,把矩阵中的每列看成一个向量,返回一个包含每一列所有元素的平均值的行向量。
如果A是一个多元数组,mean(A)将数组中第一个非单一维的值看成一个向量,返回每个向量的平均值。
②M = mean(A,dim)
返回A中沿着标量dim指定的维数上的元素的平均值。对于矩阵,mean(A,2)就是包含每一行的平均值的列向量。
3、应用举例
A = [1 2 3; 3 3 6; 4 6 8; 4 7 7];
mean(A)
ans =
3.0000 4.5000 6.0000
mean(A,2)
ans =
2.0000
4.0000
6.0000
6.0000

mean(A,3)

ans=

 1     2     3

 3     3     6

 4     6     8

 4     7     7

mean(A)

当A为向量时,那么返回值为该向量所有元素的均值

当A为矩阵时,那么返回值为该矩阵各列向量的均值

mean(A,2)

返回值为该矩阵的各行向量的均值

mean(A,3)

返回矩阵本身(第三维,例如RGB图像三个通道)

5 将数据保存到 ASCII 文件

创建两个变量,将其保存到 ASCII 文件中,然后查看文件内容。

p = rand(1,10);
q = ones(10);
save('pqfile.txt','p','q','-ascii')
type('pqfile.txt')

type 函数显示文件内容。

或者,使用 save 操作的命令语法。

save pqfile.txt p q -ascii

6 打开文件夹选择对话框

语法
file = uigetfile
[file,path] = uigetfile
[file,path,indx] = uigetfile
___ = uigetfile(filter)
___ = uigetfile(filter,title)
___ = uigetfile(filter,title,defname)
___ = uigetfile(___,‘MultiSelect’,mode)
说明
file = uigetfile 打开一个模态对话框,其中列出了当前文件夹中的文件。用户可以在这里选择或输入文件的名称。如果文件存在并且有效,当用户点击打开时,uigetfile 将返回文件名。如果用户点击取消或窗口关闭按钮 (X),uigetfile 将返回 0。

当用户点击打开时,[file,path] = uigetfile 将返回文件的名称和路径。如果用户点击取消或窗口关闭按钮 (X),uigetfile 将为两个输出参数都返回 0。

示例
当用户点击打开时,[file,path,indx] = uigetfile 将返回在对话框中选择的筛选器的索引。

示例
___ = uigetfile(filter) 指定文件扩展名,根据该扩展名筛选对话框中显示的文件。可以将此语法与上述语法中的任何输出参数结合使用。

通常,只显示文件扩展名匹配的文件。在某些平台上,uigetfile 还会显示与筛选器不匹配的文件,但这些文件的文件名会灰显。如果筛选器缺失或为空,uigetfile 将使用默认文件类型列表(例如,所有 MATLAB® 文件)。

示例
___ = uigetfile(filter,title) 指定对话框标题。要使用默认文件筛选器进行筛选,但指定自定义标题,请使用空引号作为筛选器值。例如:

file = uigetfile(’’,‘Select a File’)
示例
___ = uigetfile(filter,title,defname) 为文件名字段指定默认文件名。

示例
___ = uigetfile(___,‘MultiSelect’,mode) 指定用户是否可以选择多个文件。将模式设置为 ‘on’ 将允许进行多选。默认情况下设置为 ‘off’。

Windows® 库可以跨多个文件夹。

注意

对话框的可视特征取决于运行代码的操作系统。例如,某些操作系统不在对话框中显示标题栏。如果您向 uigetfile 函数传递对话框标题,这些操作系统不会显示标题。

按扩展名筛选文件
通过指定 ‘*. m’ 作为 filter 输入参数,在对话框中仅显示扩展名为 .m 的文件。

[file,path] = uigetfile(’*.m’);

在这里插入图片描述
示例:

file = uigetfile('*.txt', 'Select a data file');
data1 = load(file);
plot(data1);

7 MATLAB如何调出打开文件的对话框并获得文件名和路径

用MATLAB做UI界面的话,对文件操作的情况,本文使用uigetfile方法将会非常实用。

% 按键按下,进入文件夹选择
 [filename, pathname] = uigetfile('.csv','选择表格文件','E:\Code Source\MATLAB work space\public data file\csv data file\采样数据05');
disp(filename);
disp(pathname);
%没有打开文件直接退出,文件名是空的,需要处理
if (ischar(filename) == 0)||(ischar(pathname) == 0)
disp('no file');
return;
end
%合并文件路径
filepath = [pathname filename];
disp(filepath);

%合并文件路径
filepath = [pathname filename];
disp(filepath);

参考链接:
https://blog.csdn.net/cjr3517126/article/details/17394187

https://blog.csdn.net/wangyang20170901/article/details/78745587

https://blog.csdn.net/wangyang20170901/article/details/79463891

https://ww2.mathworks.cn/help/matlab/ref/uigetdir.html

https://ww2.mathworks.cn/help/matlab/ref/uigetfile.html#d123e1403516

在这里插入图片描述
Matlab2016及以上版本设置VS编译器
在Matlab中使用mex可以编译c/c++ ,但是首先要设置好编译器,可以使用mex -setup命令来设置。如果电脑上是先安装的Visual Studio,然后安装MATLAB,那么一般情况下,只需要在命令行输入mex -setup按照提示选择即可完成编译器的设置。

但是,假如是先安装的matlab后安装的Visual Studio,或者其它一些原因,很可能mex -setup命令无法找到安装好的Visual Studio编译器,那么就需要进行一些修改才能成功设置编译器了。

由于Matlab从2016版本以后使用xml文件来保存配置文件,所以如果使用的Matlab是2016以前的版本,方法可能和本文有所区别。

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值