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