创建一些取决于用户输入的数字

时间:2015-01-06 14:40:38

标签: matlab function sorting plot

我对Matlab很新,所以任何帮助都会受到赞赏。

我正在尝试使用简单的逻辑运算符编写一个函数来创建一些2D散点图,我遇到的问题是我无法弄清楚如何使用来自用户的输入(数字的数量) )实际创造这么多的数字。

*编辑(为了清楚起见,我正在绘制多组数据,即每个图上的列,但重要的是,当用户指定他们想要多少个数字时,会有多个数字,这就是位我无法理解。我理解如何使用hold on在每个图上绘制多个图形但是如何根据用户的输入改变图形数量?)

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

答案越简单越好,因为我不是一个非常有经验的编码员。

由于 GibGib

2 个答案:

答案 0 :(得分:0)

好吧,你要问的是你有这个数据矩阵M,用户定义U,你可以绘制U个图,其中每个图是U列对应M的2D分散? 在那种情况下,这会吗?

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

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

答案 1 :(得分:0)

看看这是否适合你:

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

因此,循环更容易索引到Data并获取适当的值。

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