zhyi49 发表于 2009-5-9 17:31:51

如何能从主数据中选部分出来画图表示,10楼有具体描述,谢谢

本帖最后由 zhyi49 于 2009-5-16 07:08 编辑


Name=Prüfling 1
Comment=
Heading=
Line0=Antenne: vertikal
Line1=
Line2=
Line3=
Line4=
Line5=
Line6=
Param0=bis 30MHz: Schritt: Y=0,12 dB lin, X=0,012 MHz lin, t=50 ms, Peak, 12 kHz, Meßbereich 60 dB, Low Noise, Vorverstärker ein, Rohde&Schwarz ESI
Param1=bis 300MHz: Schritt: Y=0,12 dB lin, X=0,12 MHz lin, t=50 ms, Max Peak, 120 kHz, Meßbereich 50 dB, Low Noise, Vorverstärker ein, Rohde&Schwarz ESI
Param2=bis 1000MHz: Schritt: Y=0,12 dB lin, X=0,12 MHz lin, t=50 ms, Max Peak, 120 kHz, Meßbereich 50 dB, Low Noise, Vorverstärker ein, Rohde&Schwarz ESI
Param3=
Param4=
Param5=
Param6=
Param7=
Param8=
Param9=
Tester=
No=
DateTime=07.08.2008 11:11:12
StartTime=07.08.2008 09:31:22
XUnit=MHz
YUnit=dBµV/m


3.00000000000000E+00011.48604441324867E+0001 07.08.2008 11:07:36 /*
3.01200000000000E+00011.50319517985027E+0001 07.08.2008 11:07:36 /*
3.02400000000000E+00011.39142291178387E+0001 07.08.2008 11:07:36 /*
3.03600000000000E+00011.48432746256507E+0001 07.08.2008 11:07:36 /*
3.04800000000000E+00011.42278331339517E+0001 07.08.2008 11:07:36 /*
3.06000000000000E+00011.39949828898117E+0001 07.08.2008 11:07:36 /*
3.07200000000000E+00011.47304325113937E+0001 07.08.2008 11:07:36 /*
3.08400000000000E+00011.48044212565107E+0001 07.08.2008 11:07:36 /*
3.09600000000000E+00011.47759319742837E+0001 07.08.2008 11:07:37 /*
3.10800000000000E+00011.44435028727214E+0001 07.08.2008 11:07:37 /*
3.12000000000000E+00011.46629536539717E+0001 07.08.2008 11:07:37 /*
3.13200000000000E+00011.52619668131507E+0001 07.08.2008 11:07:37 /*
3.14400000000000E+00011.45609921793620E+0001 07.08.2008 11:07:37 /*
3.15600000000000E+00011.46006105021157E+0001 07.08.2008 11:07:37 /*
3.16800000000000E+00011.48270192911787E+0001 07.08.2008 11:07:37 /*
3.18000000000000E+00011.51383050944007E+0001 07.08.2008 11:07:37 /*
3.19200000000000E+00011.49179517985027E+0001 07.08.2008 11:07:37 /*
3.20400000000000E+00011.49812975382487E+0001 07.08.2008 11:07:37 /*
3.21600000000000E+00011.47697485636397E+0001 07.08.2008 11:07:38 /*
3.22800000000000E+00011.44008891031901E+0001 07.08.2008 11:07:38 /*
3.24000000000000E+00011.38933730265297E+0001 07.08.2008 11:07:38 /*
3.25200000000000E+00011.50191043253577E+0001 07.08.2008 11:07:38 /*
3.26400000000000E+00011.52193214029947E+0001 07.08.2008 11:07:38 /*
3.27600000000000E+00011.68091335123667E+0001 07.08.2008 11:07:38 /*
3.28800000000000E+00011.46231811564127E+0001 07.08.2008 11:07:38 /*
3.30000000000000E+00011.41715503946937E+0001 07.08.2008 11:07:38 /*
3.31200000000000E+00011.46532539835617E+0001 07.08.2008 11:07:38 /*
3.32400000000000E+00011.46258785929367E+0001 07.08.2008 11:07:38 /*
3.33600000000000E+00011.41068497599287E+0001 07.08.2008 11:07:39 /*
3.34800000000000E+00011.46777333414717E+0001 07.08.2008 11:07:39 /*
3.36000000000000E+00011.40573861490887E+0001 07.08.2008 11:07:39 /*
3.37200000000000E+00011.45518079386397E+0001 07.08.2008 11:07:39 /*
3.38400000000000E+00011.40470002970377E+0001 07.08.2008 11:07:39 /*
3.39600000000000E+00011.41992590006507E+0001 07.08.2008 11:07:39 /*
3.40800000000000E+00011.37054758341467E+0001 07.08.2008 11:07:39 /*
3.42000000000000E+00011.35344542032877E+0001 07.08.2008 11:07:39 /*
3.43200000000000E+00011.37995974283857E+0001 07.08.2008 11:07:39 /*
3.44400000000000E+00011.31457343058267E+0001 07.08.2008 11:07:39 /*
3.45600000000000E+00011.41630366495767E+0001 07.08.2008 11:07:39 /*
3.46800000000000E+00011.32808333780927E+0001 07.08.2008 11:07:40 /*
3.48000000000000E+00011.35832843424477E+0001 07.08.2008 11:07:40 /*
3.49200000000000E+00011.34062965250647E+0001 07.08.2008 11:07:40 /*
3.50400000000000E+00011.37218395304367E+0001 07.08.2008 11:07:40 /*
3.51600000000000E+00011.47485718058267E+0001 07.08.2008 11:07:40 /*
3.52800000000000E+00011.34328739664717E+0001 07.08.2008 11:07:40 /*
3.54000000000000E+00011.35124245402017E+0001 07.08.2008 11:07:40 /*
3.55200000000000E+00011.39999951334637E+0001 07.08.2008 11:07:40 /*
3.56400000000000E+00011.37270981974287E+0001 07.08.2008 11:07:40 /*
3.57600000000000E+00011.32982716959637E+0001 07.08.2008 11:07:40 /*
3.58800000000000E+00011.31760324137367E+0001 07.08.2008 11:07:41 /*
3.60000000000000E+00011.29634229532867E+0001 07.08.2008 11:07:41 /*

这些数据是EMC 的测量值,我想把它读入Matlab 中, 把后面的两列数据读出,并画图,第一列是连续的频率值,作为X轴,第二列是dBuv/m作为Y 轴,同时数据头文件的描述想作为描述内容在TEXT 文本框中动态显示出来以对应于不同的Prüfling (样本), 非常感谢!!

风天小畜 发表于 2009-5-9 17:47:14

万能的 fopen ,fscanf,fgetl ,fclose.........

很多老帖子,讲了数据读取,请自行查阅。

zhyi49 发表于 2009-5-9 17:53:17

本帖最后由 zhyi49 于 2009-5-9 18:08 编辑

上面的试过一些,但数据格式复杂,同时如何把主数据中每一行的时间去掉,谢谢
新手,多多理解!谢谢

这个格式是固定的现在就是如何把里面各个部分分离开,分别显示GUI 界面的不同部分,主数据在GUI 界面上画图表达出来,谢谢!

风天小畜 发表于 2009-5-9 18:59:01

本帖最后由 风天小畜 于 2009-5-9 19:00 编辑

作为新手,你更应该相信,fopen ,fscanf,fgetl ,fclose. 可以搞定任何的文本格式的数据读取。
基本的数据分离什么的,学起来不难的。

http://forum.simwe.com/viewthread.php?tid=875105
这里有三种常见的读取数据的。

但是,你要跳过几行。
这里,要用到 fgetl 或者 fseek


------
你说的时间,
其实,时间,你读取格式,设定为 字符串,即可。

zhyi49 发表于 2009-5-9 20:01:12

本帖最后由 zhyi49 于 2009-5-9 20:12 编辑

fid=fopen('FELD_V.txt', 'r');
i = 1;
date = [];

while 1
    tline = fgetl(fid);
    if ~ischar(tline),   break, end
    = strtok(tline);
    = strtok(remain);
    date(1,i) = str2num(tline1);
    date(2,i) = str2num(tline2);
    i = i + 1;
end
fclose(fid);
plot(date(1,:),date(2,:),'-r');
disp('OK')

就是说我现在只能FELD_V.txt   这种形式时候才可以.
3.00000000000000E+00011.48604441324867E+0001 07.08.2008 11:07:36 /*
3.01200000000000E+00011.50319517985027E+0001 07.08.2008 11:07:36 /*
3.02400000000000E+00011.39142291178387E+0001 07.08.2008 11:07:36 /*
3.03600000000000E+00011.48432746256507E+0001 07.08.2008 11:07:36 /*
3.04800000000000E+00011.42278331339517E+0001 07.08.2008 11:07:36 /*
3.06000000000000E+00011.39949828898117E+0001 07.08.2008 11:07:36 /*
3.07200000000000E+00011.47304325113937E+0001 07.08.2008 11:07:36 /*
3.08400000000000E+00011.48044212565107E+0001 07.08.2008 11:07:36 /*
3.09600000000000E+00011.47759319742837E+0001 07.08.2008 11:07:37 /*




我就是这么写的.但是只能在把数据头删掉的情况下读如,如何能带上数据头处理,也就是如何能跳过那几行数据处理.谢谢!

zhyi49 发表于 2009-5-13 05:24:55

哪位大虾能帮偶实际解决一下,谢谢啊

ZanDZ 发表于 2009-5-13 13:28:16

你去看看strtok那个函数的帮助文件,strtok函数是可以设置读取数据时的分隔符的。
然后将'07.08.2008'作为分隔符就可以了。
:)

ZanDZ 发表于 2009-5-13 13:32:38

跳过几行的那个部分可以这样处理(意思是这样,matlab代码可能不太对)

while 1
    ts=fgetl(fid);
    if (strcmp(ts, '');
      break;
    end
end
%上面的内容相当于,打开文件后,让文件指针一行行往下走,但不读,直到
%碰到''字符串为止,跳出。
%下面再用while循环读需要的数据

zhyi49 发表于 2009-5-14 02:38:42

多谢多谢.搞定.呵呵

zhyi49 发表于 2009-5-16 04:50:31

本帖最后由 zhyi49 于 2009-5-16 05:08 编辑

我现在又遇到新问题了.在第一列中是频率值(MHz)3MHz to 3.6MHz
第一列为X轴频率, 我想设定两个频率输入值,介于3MHz to 3.6MHz
然后通过plot 画出这段频率对应的图.(y 轴为对应的场强大小)
先设定了两句输入
fMin=min(date(1,: )
fMax=max(date(1,: )          %%找出第一列中的最小和最大值.已经实现!

ff1=input('please input a x1(MHz):');
ff2=input('please input a x2(MHz):');一提      %%要求两个输入值



后面需要判断fMin<=ff1<ff2<=fMax 然后取出 符合条件的x 值(ff1<x<ff2),并找出x对应的y值.然后画图出来,具体如何实现? 多谢!

messenger 发表于 2009-5-16 11:55:50

10# zhyi49

你这个问题要实现不难吧,自己写有什么困难吗?


我现在又遇到新问题了.在第一列中是频率值(MHz)3MHz to 3.6MHz
第一列为X轴频率, 我想设定两个频率输入值,介于3MHz to 3.6MHz
然后通过plot 画出这段频率对应的图.(y 轴为对应的场强大小)
先设定了两句输入
...
zhyi49 发表于 2009-5-16 04:50 http://forum.simwe.com/images/common/back.gif

zhyi49 发表于 2009-5-16 14:06:37

本帖最后由 zhyi49 于 2009-5-16 14:12 编辑

我实在没有想法,请大家再给点建议,就是能随机按照任意给出的频率段(第一列中)来作为x轴,其对应的值(第二列中)做y轴来画图,若能帮写伪代码或代码就更好了,非常感谢!

zhyi49 发表于 2009-5-17 14:54:28

哪位大侠能帮帮小弟,特急.非常感谢

messenger 发表于 2009-5-17 15:21:10

很简单呀,判断语句就用 if 就可以了
if ff1>=fMin

if ff1=<fMax

if ff2>ff1

if ff2=<fMax

x=date(1,:)

y=date(2,:)

=find(x>ff1 & x<ff2)



plot(x(J),y(J))


end
end
end
end

页: [1]
查看完整版本: 如何能从主数据中选部分出来画图表示,10楼有具体描述,谢谢