根据用户输入创建多个图形
Creating a number of figures dependent on user input
我是 Matlab 的新手,所以任何帮助将不胜感激。
我正在尝试使用简单的逻辑运算符编写一个函数来创建多个二维散点图,我一直遇到的问题是我无法弄清楚如何使用用户的输入(数字的数字)实际创建数字的数量。
*edit(为了清楚起见,我绘制了多组数据,即每个图中的列,但重要的一点是会有多个数字,因为用户指定他们想要多少个数字,这是我无法理解的一点。我了解如何使用 hold on 在每个图形上绘制多个图形,但是如何根据用户的输入改变图形的数量?)
用户输入是一个矩阵,其尺寸为 4000x30(这将在我的使用中保持不变)和数字的数量(这将从 1-30 变化)从该数据集中绘制。每列代表一个不同的传感器,因此每列代表一组数据。
答案越简单越好,因为我不是一个非常有经验的编码员。
谢谢
GibGib
好的,看来您要问的是您有这个数据矩阵 M,用户在其中定义了 U,然后您绘制了 U 个图,其中每个图都是 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
因此在循环中更容易索引到 Data
并获取适当的值。
%// Plot
for k = 1:NumFigures;
hFig(k) = figure;
plot(Data(:,ColStart(k):ColStart(k)+ColPerFig-1));
end
我是 Matlab 的新手,所以任何帮助将不胜感激。
我正在尝试使用简单的逻辑运算符编写一个函数来创建多个二维散点图,我一直遇到的问题是我无法弄清楚如何使用用户的输入(数字的数字)实际创建数字的数量。
*edit(为了清楚起见,我绘制了多组数据,即每个图中的列,但重要的一点是会有多个数字,因为用户指定他们想要多少个数字,这是我无法理解的一点。我了解如何使用 hold on 在每个图形上绘制多个图形,但是如何根据用户的输入改变图形的数量?)
用户输入是一个矩阵,其尺寸为 4000x30(这将在我的使用中保持不变)和数字的数量(这将从 1-30 变化)从该数据集中绘制。每列代表一个不同的传感器,因此每列代表一组数据。
答案越简单越好,因为我不是一个非常有经验的编码员。
谢谢 GibGib
好的,看来您要问的是您有这个数据矩阵 M,用户在其中定义了 U,然后您绘制了 U 个图,其中每个图都是 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
因此在循环中更容易索引到 Data
并获取适当的值。
%// Plot
for k = 1:NumFigures;
hFig(k) = figure;
plot(Data(:,ColStart(k):ColStart(k)+ColPerFig-1));
end