Matlab绘制衰减指数和曲线拟合以查找峰值

o2gm4chl  于 2022-12-23  发布在  Matlab
关注(0)|答案(1)|浏览(375)

我试图从一个csv文件中绘制数据,我已经成功地将csv文件上传为每一列的数组,然后我试图找到每一列的峰,然后我需要将每一个的峰值绘制成一个时间常数我得到了一个错误,我需要有相同大小的向量来绘制,我还试图在一个图上绘制所有的数据集,并为每个数据集拟合曲线。请帮助我!代码如下

Array=csvread("D:\Grad Lab\NMR\Data\T1 Data\compiledT1nolabel.csv");
tau = Array(:,1);
Water= Array(:,2);
Mineral_Oil = Array(:,3);
Glycerol = Array(:,4);
CuSO4_1=Array(:,5);
CuSO4_2=Array(:,6);
CuSO4_3=Array(:,7);
CuSO4_4=Array(:,8);
CuSO4_5=Array(:,9);

pks1 = findpeaks(Water);
pks2 = findpeaks(Mineral_Oil);
pks3 = findpeaks(Glycerol);
pks4 = findpeaks(CuSO4_1);
pks5 = findpeaks(CuSO4_2);
pks6 = findpeaks(CuSO4_3);
pks7 = findpeaks(CuSO4_4);
pks8 = findpeaks(CuSO4_5);

plot(pks1,tau)
f3temu5u

f3temu5u1#

问题是pks向量和您试图绘制的相应数据数组的大小不同:对不同大小的向量调用plot函数会产生错误。
在下面的示例脚本中,data包含一组值。使用两个输出(即locspks)调用findpeaks允许存储位置和峰值。现在我们可以使用locspks以及plot标记峰值,如下所示:

data = [25 8 15 5 6 10 10 3 1 20 7];
[pks, locs] = findpeaks(data);
plot(data); hold
plot(locs, pks, 'd')

生成以下图:

或者,如果只是对打印感兴趣,可以使用

findpeaks(data)

无任何输出:它将生成如下图:

对于OP的特定情况,我将他的脚本修改如下(仅涵盖一组峰,模式应清晰):

Array=csvread("D:\Grad Lab\NMR\Data\T1 Data\compiledT1nolabel.csv");
tau = Array(:,1);
Water = Array(:,2);

[pks1, locs1] = findpeaks(Water);

figure
plot(tau, Water); hold on;
plot(tau(locs1), pks1, 'd');

相关问题