24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2908  |  回复: 21
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

匿名

用户注销 (著名写手)

本帖仅楼主可见
已阅   同方向广播   申请仿真EPI   回复此楼   编辑   查看我的主页

wangyuewu08

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
wangyongyong: 金币+10, ★★★★★最佳答案 2012-04-17 13:29:24
臭水沟: 金币+2, 谢谢交流~~ 2012-04-18 08:29:24
看看dlmread函数的说明。
【循环开始】
读入数据
画图
hold on
【循环结束】
往事并不如烟
2楼2012-04-17 13:24:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
wangyongyong: 金币+10, ★★★★★最佳答案 2012-04-18 08:18:12
臭水沟: 金币+1, 谢谢交流~~ 2012-04-18 08:29:43
你传3个txt文档上来吧,txt文档的命名最好有规则
往事并不如烟
4楼2012-04-18 08:04:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)

★ ★
xiegangmai: 金币+2, 谢谢参与! 2012-04-18 19:01:27
CODE:
%   XRD,X射线衍射
%   function:在同一个figure中绘制多个txt文件中的数据
%   version:7.11.0.584 (R2010b)
%   wyw
%   20120418

%   因为最近很忙,图形的细节留给楼主自己解决,不好意思
%   文件存放的路径,需要手动修改,注意最后的反斜杠
file_folder = 'E:\MyFile\Matlab\论坛帮助\X射线衍射\';
%   文件名称的列表,如果文件名很有规律的话,请告知,可以简化
file_name = {'a.txt', 'b.txt', 'c.txt'};
number_of_file = length(file_name);
figure(1)
hold on
for ii = 1 : number_of_file
    data = dlmread([file_folder, file_name{ii}]);
    x = data(:, 1);
    y = data(:, 2);
    plot(x, y);
    clear data x y; %考虑到数据大小可能不一致
end
hold off

» 本帖已获得的红花(最新10朵)

往事并不如烟
6楼2012-04-18 12:19:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)

excel画图容易解决,坐标轴范围也容易解决,曲线的渐变色以前没有用过,看图形的意思是曲线的颜色表示压力值
往事并不如烟
9楼2012-04-18 18:26:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)

★ ★
臭水沟: 金币+2, 谢谢交流~~ 2012-04-20 09:04:50
CODE:
%   XRD,X射线衍射
%   function:绘制excel中的多对数据
%   version:7.11.0.584 (R2010b)
%   wyw
%   20120418

%   重要说明
%   表格中数据的位置与楼主上传的要一致,否则程序运行错误;
%   1.为了方便提取数据,表格中压力的单位要去掉,只保留数值;
%   2.表格中残缺的数据用0表示,而不是--;
%   祝你顺利

%   文件存放的路径,需要手动修改,注意最后的反斜杠
folder_name = 'E:\MyFile\Matlab\论坛帮助\X射线衍射\';
file_name = 'XRDpn.xls';
number_of_txt = 12; %txt文件的个数,即曲线的条数
%   提取压力数值,用来制作colormap
num = xlsread([folder_name, file_name], 'A1:X1');
pressure = zeros(number_of_txt, 1);
for ii = 1 : 2 : number_of_txt*2 - 1
    pressure((ii+1)/2) = num(ii);
end
%   提取绘图数据,绘制曲线
data = xlsread([folder_name, file_name], 'A4:X746');
%   绘图
figure(1)
hold on
cmap = colormap(jet(36));   %提取其中的36种颜色
for ii = 1 : number_of_txt
    x = data(:, ii*2-1);
    y = data(:, ii*2);
    %   通过关系运算去除表格中的零点
    %   colormap中需提供行数,所以要通过ceil取整,因为最小数是0.05只能够向上取整
    plot(x(x~=0), y(y~=0), 'Color', cmap(ceil(pressure(ii)), :));
    clear x y;  %考虑到数据的维数可能不一致
end
hold off
colorbar;   %显示色彩条
set(gca, 'XLim', [10, 20]); %设置坐标范围

运行结果如下图:

效果还不错,比楼主帖子里粘的那张图要好

往事并不如烟
11楼2012-04-18 19:35:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)


臭水沟: 金币+1, 谢谢交流~~ 2012-04-20 09:04:56
修改之后的excel,以后的excel都按这种格式修改。
去掉压力单位值,将缺失的数据设置为0。

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : XRDpn.xls
  • 2012-04-18 19:36:43, 343.5 K
往事并不如烟
12楼2012-04-18 19:37:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)

引用回帖:
15楼: Originally posted by wangyongyong at 2012-04-19 08:29:31:
我在运行的时候,怎么提示下面的错误信息啊,

??? Subscript indices must either be real positive integers or logicals.

Error in ==> XRD2 at 34
    plot(x(x~=0), y(y~=0), 'Color', cmap(ceil( ...

你的压力值有小于0的吗?有的话还得处理一下
往事并不如烟
16楼2012-04-19 08:33:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)


臭水沟: 金币+1, 谢谢交流~~ 2012-04-20 09:05:07
CODE:
%   XRD,X射线衍射
%   function:绘制excel中的多对数据
%   version:7.11.0.584 (R2010b)
%   wyw
%   20120419

%   修改:
%   1.将压力值的下限修改为1;

%   重要说明
%   表格中数据的位置与楼主上传的要一致,否则程序运行错误;
%   1.为了方便提取数据,表格中压力的单位要去掉,只保留数值;
%   2.表格中残缺的数据用0表示,而不是--;
%   祝你顺利

%   文件存放的路径,需要手动修改,注意最后的反斜杠
folder_name = 'E:\MyFile\Matlab\论坛帮助\X射线衍射\';
file_name = 'XRDpn.xls';
number_of_txt = 12; %txt文件的个数,即曲线的条数
%   提取压力数值,用来制作colormap
num = xlsread([folder_name, file_name], 'A1:X1');
pressure = zeros(number_of_txt, 1);
for ii = 1 : 2 : number_of_txt*2 - 1
    pressure((ii+1)/2) = num(ii);
end
%   matlab中的下标只能是正整数或逻辑数组
%   通过下面这条语句将小于或等于0的压力值取为1
pressure(pressure<=1) = 1;
%   提取绘图数据,绘制曲线
data = xlsread([folder_name, file_name], 'A4:X746');
%   绘图
figure(1)
hold on
cmap = colormap(jet(36));   %提取其中的36种颜色
for ii = 1 : number_of_txt
    x = data(:, ii*2-1);
    y = data(:, ii*2);
    %   通过关系运算去除表格中的零点
    %   因为压力值的下限已经设置为1,所以可以用round取整
    plot(x(x~=0), y(y~=0), 'Color', cmap(round(pressure(ii)), :));
    clear x y;  %考虑到数据的维数可能不一致
end
hold off
colorbar;   %显示色彩条
set(gca, 'XLim', [10, 20]); %设置坐标范围

往事并不如烟
17楼2012-04-19 09:00:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)

引用回帖:
18楼: Originally posted by wangyongyong at 2012-04-19 10:26:03:
没有小于0的,我都按照你的路径建立了相应的目录,把你修改后的excel考进去,运行的时候,还是提示上面的错误信息,不清楚是什么原因,你画的图那么好看,我直接就运行不出来。谢谢!

把你的excel上传一下
往事并不如烟
19楼2012-04-19 10:31:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangyuewu08

木虫 (著名写手)

引用回帖:
20楼: Originally posted by wangyongyong at 2012-04-19 10:53:02:
我用的就是你改完之后的那个excel,XRDpn.xsl。没做改动的,我先改改看看吧,要不得老麻烦你,不好意思了,有问题再问你。

在变量编辑器中双击pressure,把它的值截个图传上来
往事并不如烟
21楼2012-04-19 11:29:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wangyongyong 的主题更新
信息提示
请填处理意见