Arrays 读取mat数据文件并从中绘制2D矢量 这里有点细节,我来自C++老语言背景,同时解决老师问的MATLAB问题。 我得到一个包含真实数据的mat文件,我需要读取它,将值分配给二维数组,因为波形的尖峰是二维数组。在X轴和Y轴上绘制它。 然后我需要通过查看大多数尖峰都在这两个数字之间的尖峰来设置一个阈值,例如,这个数字的一个范围,所以额外的位被切掉,只取低于某个阈值的尖峰(2-D数组)。 Spike指的是一个简单的信号,当患者生病时,您会看到它的心跳显示在屏幕上。 我的数据文件大小为313MB。那么有谁能指导我如何处理这个大文件呢

Arrays 读取mat数据文件并从中绘制2D矢量 这里有点细节,我来自C++老语言背景,同时解决老师问的MATLAB问题。 我得到一个包含真实数据的mat文件,我需要读取它,将值分配给二维数组,因为波形的尖峰是二维数组。在X轴和Y轴上绘制它。 然后我需要通过查看大多数尖峰都在这两个数字之间的尖峰来设置一个阈值,例如,这个数字的一个范围,所以额外的位被切掉,只取低于某个阈值的尖峰(2-D数组)。 Spike指的是一个简单的信号,当患者生病时,您会看到它的心跳显示在屏幕上。 我的数据文件大小为313MB。那么有谁能指导我如何处理这个大文件呢,arrays,matlab,2d,Arrays,Matlab,2d,因此,任何帮助代码都非常有用。在Matlab中键入以下内容: help load 读一下。然后键入: help plot 读一下。开始解决您的问题,然后回来寻求帮助。首先将.mat文件加载到当前工作区: load(filename) 文件名类似于“data.mat” 在此之后,您应该在工作区中拥有2D数组……让我们假设它的名称为“data”。如果第一行是X轴,第二行是Y轴,则使用: plot(data(1,:), data(2,:)) MATLAB中的“:”选择2D数组中的每一列。然后,

因此,任何帮助代码都非常有用。

在Matlab中键入以下内容:

help load
读一下。然后键入:

help plot

读一下。开始解决您的问题,然后回来寻求帮助。

首先将.mat文件加载到当前工作区:

load(filename)
文件名类似于“data.mat”

在此之后,您应该在工作区中拥有2D数组……让我们假设它的名称为“data”。如果第一行是X轴,第二行是Y轴,则使用:

plot(data(1,:), data(2,:))
MATLAB中的“:”选择2D数组中的每一列。然后,您可以使用以下方法查找超过阈值的所有值索引:

indexes = find(data(1,:) > threshold)
如果要在阈值处饱和这些值,请执行以下操作:

data(1,indexes) = threshold
除了每个函数完成所需的时间外,您的.mat文件的大小不应改变任何内容


编辑:你的问题陈述含糊不清,所以希望我能正确理解你。如果我不明白你想要什么,请告诉我。

从阅读文档开始:然后制定一个真实的问题,说明你尝试了什么,以及什么没有按你想要的方式工作。当然,高性能分数:)我正在阅读math works文档。这是我迄今为止的成就。我使用了以下代码。加载('rawspikes.mat')%时间,波形是在工作区中找到的两个变量,在工作区中总共有806041个波形新_波形=(1:80000)%s提取了波形的前80000个实例并保存到新_波形图(1:80000,1)%这绘制了关于第1列的1-80000个波形,我从主变量中提取了该波形。现在我的任务是进一步提取特定波形,达到特定阈值阈值=2.5e-5%图形值。现在我需要进行某种循环,以拾取特定阈值处结束的波形。在二维图形中,它们是从-2到+2(-低于中心轴,+高于中心轴。我知道C语言中的for循环。但我的问题是,我可以将哪个值与阈值进行比较,以提取波形,这些波形将在图形中达到某个阈值。我的想法是,我需要将波形保存到一个变量中,并将其与主阈值w进行比较threshold=2.5e-5感谢您的帮助:)有没有关于这个“高分性能”的帮助,或者关于获取某个阈值的波形并绘制它的任何不同的逻辑想法?好的建议。非常有用的评论。安德鲁。我的文件名为rawspecks.mat,所以我将它加载到matlab工作区('rawspecks.mat')在工作空间中,它加载了两个双值时间波形,然后我尝试了上面的表达式它起作用了,但它没有显示波形,而是打开了一个图1的窗口,在图1窗口的中间有这么多的小点和一条线。我猜,有两个多的值,所以我可能需要限制它们。其次,它没有显示像正弦波那样的波形。谢谢堆。安德鲁,它起作用了一点。我尝试了绘图(时间,波形),它在屏幕前面画了一个有很多尖峰的尖峰波形,有两个轴,x轴从-2开始到1.5(-2,-1.5,-0.5,0.5,1,1.5),Y轴从01000开始到10000,这意味着有很多数据。如何将x轴上的尖峰从-0.5到0.5(或可能是0.3)分开。我想我需要访问时间、波形(工作区变量)的2D数组,并在其上指定某种循环和条件。任何想法。注意:Andrew代码中的“索引”是一个数组。“查找”是重载的,用于处理“数据(1,:)”(实际上是任何大小的数组)等向量。我非常怀疑有太多的值。你确定你的数据是行向量而不是列向量吗?如果你能在原始帖子中添加图像,甚至是数据向量的屏幕截图来帮助我们理解你所说的话,那会更容易帮助你。我很难理解你的一些句子。谢谢朋友,我试过绘图(时间,波形),它画了一个尖峰波形,屏幕前面有很多尖峰,有两个轴,x轴从-2开始到1.5(-2,-1.5,-0.5,0,0.5,1,1.5),Y轴从01000开始到10000,这意味着很多数据。我如何区分x轴上的尖峰在-0.5到0.5之间(或者可能是0.3).我想我需要访问2D时间、波形(工作区变量)数组,并在其上指定某种循环和条件。任何想法都可以。非常感谢。听起来你的轴是向后的。“whos”将为你提供工作区中所有变量的信息。“if”用于决策。“for”是循环。但是如果你能帮助的话,你不想在Matlab中循环,因为Matlab是矢量化的——循环会让它慢几个数量级。见Andrew的答案。嗨,伙计,我刚才提到过——我从主变量中提取了波形,提取了它的前1-80000行(mat文件的主变量包含806041X50值,因此我选择8000x1(数据列)并绘制了它,现在我正在寻找从中提取波形的某个阈值。此时,它们都被绘制到图形上的不同点。现在,如果我想提取某个值,我需要将波形值与某个阈值进行比较。我研究了Matlab的图形值为2.5e-5。