Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 根据用户输入创建大量图形_Matlab_Function_Sorting_Plot - Fatal编程技术网

Matlab 根据用户输入创建大量图形

Matlab 根据用户输入创建大量图形,matlab,function,sorting,plot,Matlab,Function,Sorting,Plot,我对Matlab相当陌生,因此任何帮助都将不胜感激 我试图用简单的逻辑运算符编写一个函数来创建一些2D散点图,我遇到的问题是,我无法解决如何使用用户输入的数字来实际创建这些数字 *编辑只是为了清晰,我在每个图形上绘制多组数据,即列,但重要的是,当用户指定他们想要多少图形时,将有多个图形,这是我无法理解的部分。我知道如何使用hold on在每个图形上绘制多个图形,但如何根据用户的输入改变图形的数量 用户输入是一个尺寸为4000x30的矩阵,对于我的使用,这将保持不变,并且数字的数量将从1-30更改

我对Matlab相当陌生,因此任何帮助都将不胜感激

我试图用简单的逻辑运算符编写一个函数来创建一些2D散点图,我遇到的问题是,我无法解决如何使用用户输入的数字来实际创建这些数字

*编辑只是为了清晰,我在每个图形上绘制多组数据,即列,但重要的是,当用户指定他们想要多少图形时,将有多个图形,这是我无法理解的部分。我知道如何使用hold on在每个图形上绘制多个图形,但如何根据用户的输入改变图形的数量

用户输入是一个尺寸为4000x30的矩阵,对于我的使用,这将保持不变,并且数字的数量将从1-30更改为该数据集的绘图。每列代表一个不同的传感器,因此每列代表一组数据

答案越简单越好,因为我不是一个经验丰富的程序员

谢谢
GibGib

好的,看起来你要问的是,你有这个数据矩阵M,其中用户定义了U,你要绘制U个图,其中每个图是对应于M的U列的二维散点? 那样的话,这样行吗

figure;
hold on %is optional depending how you want your plot
for i = 1:U
 plot(M(:,i))
end

如果这不是您想要的,请进一步说明您的问题

看看这是否适合您:

Data = rand(40,30); %// Just a small data set for testing.

%// Ask user how many figures are desired
prompt = {'Enter desired number of figures:'};
dlg_title = 'Input';
num_lines = 1;
def = {'5'};

NumFigures = inputdlg(prompt,dlg_title,num_lines,def);

%// Get # of figures. If the entry is not valid (i.e. remainder of division 30/entry is not 0), ask again.
while rem(size(Data,2),str2double(NumFigures{1})) ~= 0
NumFigures = inputdlg(prompt,dlg_title,num_lines,def);
end

    NumFigures = str2double(NumFigures{1}); %// Convert to number
ColPerFig = size(Data,2)/NumFigures; %// Number of columns to plot per figure

ColStart = 1:ColPerFig:size(Data,2) %// Indices of the starting columns to plot
ColStart如下所示:

ColStart =

     1     7    13    19    25
因此,在循环中更容易索引到数据并获取适当的值

%// Plot
for k = 1:NumFigures;    
    hFig(k) = figure;        
    plot(Data(:,ColStart(k):ColStart(k)+ColPerFig-1));
end

需要明确的是:您是要打开多个图形,还是要打开一个包含多个子图形的图形?很抱歉造成混淆,我正在尝试创建许多具有相同列数的图形,在每个图形上绘制相同列数。在您的示例中,我所寻找的是一种创建多个数字为U的图形的方法,但在这些图形上,将所有数据以M等分绘制为不同的图形。例如,如果您选择U作为5,因为有30列,那么每个图形上会有6列数据,每个数据列作为单独的绘图。这非常有用!当集成到我的代码中时,它可以完美地工作,并且它足够简单,即使是我也能理解。谢谢你接受了这个答案,如果可以的话我会投赞成票!再次感谢!我肯定我会在某个时候回来问更多的问题:D