Matlab 更改绘图中的X轴范围

Matlab 更改绘图中的X轴范围,matlab,label,Matlab,Label,此示例显示了在不同深度测量的三个不同变量的曲线图,其中每个测量的深度不同。我想知道是否有可能改变X轴,使显示的范围从0到1不等,分别表示最小深度和最大深度。这可能吗 我目前使用的方法是: clear all depth1 = [0;2;3;4;5;6;8;10;12;14;16;18]; depth2 = [0;2;3;4;5;6;7;8;9;10;11;12]; depth3 = [0;4;6;8;10;12;14;16;18;20;22;24]; Depth = {depth1,depth2

此示例显示了在不同深度测量的三个不同变量的曲线图,其中每个测量的深度不同。我想知道是否有可能改变X轴,使显示的范围从0到1不等,分别表示最小深度和最大深度。这可能吗

我目前使用的方法是:

clear all
depth1 = [0;2;3;4;5;6;8;10;12;14;16;18];
depth2 = [0;2;3;4;5;6;7;8;9;10;11;12];
depth3 = [0;4;6;8;10;12;14;16;18;20;22;24];
Depth = {depth1,depth2,depth3};

data1 = [0.8,0.797,0.796,0.795,0.795,0.795,0.797,0.798,0.8,0.802,0.803,0.802];
data2 = [0.764,0.752,0.743,0.745,0.746,0.736,0.710,0.656,0.584,0.574,0.577,0.601];
data3 = [0.760,0.750,0.745,0.714,0.593,0.354,0.257,0.272,0.295,0.327,0.368,0.379];
Data = {data1;data2;data3}';

coloring = {[0 0 0],[1 0 0],[0 0 1]}';
marking = {'+','o','s'};

for i = 1:length(Depth);
    fh = figure(1);
    plot(Depth{i},Data{i},'color',coloring{i},'Marker',marking{i});hold on;
    legend;
    set(fh,'color','white');
    set(gca,'TickLength',[.01 .01],'TickDir','out','box','on','XMinorTick','on',...
        'YMinorTick','on','FontName','Helvetica','FontSize', 14,...
         'Fontweight','demi','XColor','k','YColor','k');      
end
然后根据这个新的深度向量绘制数据

newDepth = cellfun(@(x)linspace(0,1,length(x)),Depth,'un',0);

有更好的方法吗?

我认为你规范化变量的方法不对。使用
cellfun(@(x)linspace(0,1,length(x)),Depth,'un',0)对x轴值的当前标准化
退化每个
深度
向量的元素之间的关系。我想正确的方法是,

for i = 1:length(Depth);
    fh = figure(1);
    plot(newDepth{i},Data{i},'color',coloring{i},'Marker',marking{i});hold on;
    legend;
    set(fh,'color','white');
    set(gca,'TickLength',[.01 .01],'TickDir','out','box','on','XMinorTick','on',...
        'YMinorTick','on','FontName','Helvetica','FontSize', 14,...
         'Fontweight','demi','XColor','k','YColor','k');      
end
这样,未规范化
深度的不同元素之间的相对间距也保留在规范化值中。用这个,让我知道。我确信使用
newDepth=cellfun(@(x)linspace(0,1,length(x)),Depth,'un',0)获得的规范化图不正确。您只是没有意识到这一点,因为在规范化图中,微小的错误缩放并没有非常明显地表现出来

至于在循环中绘制图形的方法,我认为目前还可以。你到底发现它有什么问题

 newDepth = cellfun(@(x)(((x)-(min(x)))'./((max(x))-(min(x)))'),Depth,'un',0);