如何将matlab一张图中多组图分别保存为一张图
实现的方法和详细的操作步骤如下:
1、首先,打开软件,找到图像输出控制部分语句,此处演示3条不同曲线的输出,并通过图形控制结果显示窗口,如下图所示,然后进入下一步。
2、其次,完成上述步骤后,运行语句,通过此控制方法,结果仅存储在不同的窗口中,而不是存储在同一窗口中,并以多行显示,如下图所示,然后进入下一步。
3、接着,完成上述步骤后,使用“hold on”命令,注意添加多次,运行程序后,可以在同一窗口中看到三个结果,如下图所示,然后进入下一步。
4、然后,完成上述步骤后,使用子图为每个输出添加此语句。函数之后有一个(n,m,a)格式语句,其中n表示所有图中的行数,m表示列数,a表示图数,如下图所示,然后进入下一步。
5、随后,完成上述步骤后,运行此代码,可以获得“2 x 2”的结果。选择m和n的值,这对于所有子图片来说都是完全相同的,并且a表示“第几幅”,根据第一种和第二种方法计数,如下图所示,然后进入下一步。
6、最后,完成上述步骤后,修改代码,代码指示显示为一行三列,如下图所示。这样,问题就解决了。
1、首先,我们随机产生三组范围不同的数据,数据量都为500,他们的边界分别为[10,15],[23,38],,[38,58]。方法如下:
x1=10+5*rand(500,1);
x2=23+15*rand(500,1);
x3=38+20*rand(500,1);
2、下面,我们要分别画出x1,x2,x3对应的曲线,用MATLAB的内置函数plot进行操作,分别用三个plot进行绘图,结果如下:
plot(x1,'r');
plot(x2,'b');
plot(x3,'g');
3、可以看到,图中只有一条曲线,并没有其他两条曲线。这是因为后面plot的语句画的图会将前面plot画的图覆盖掉。因此我们需要用一个语句来保留前面所绘制的图,在需要保留的图的后面加一句hold on,即可将该图保留,使它不被后面的图所覆盖,具体语法如下:
plot(x1,'r');
hold on
plot(x2,'b');
hold on
plot(x3,'g');
4、这样就可以将三条曲线画在一张图上,为了区别,要分别给这三条曲线定义不同的颜色。
5、为了图的美观,我们可以用grid on添加网格线,还需要添加横纵坐标轴标题。方法如下:
xlabel('样本序列');
ylabel('值');
6、除此之外,因为我们画的是多条曲线,因此还需要添加图例,语法如下:
legend('变量1','变量2','变量3')
括号里面按照画图的顺序分别写每条曲线代表的意义即可。
7、最后这样就完成了。
这个应该不难,matlab有个subplot函数是将几个函数图像进行分幅,举例:>> x=-pi:0.1:pi
>> y1=x.^2;
>> y2=x.^3;
>> y3=x.^4;
>> subplot(1,3,1)%进行分幅处理
>> plot(x,y1)第一幅打印y1=x.^2(点积是因为x属于一行多列的数组,不是x^2,因为x非方阵)
>> subplot(1,3,2)
>> plot(x,y2)第二幅打印y2=x.^3
>> subplot(1,3,3)
>> plot(x,y3)第三幅打印y1=x.^4
很遗憾呀,我不能上传图片,反正这个函数可以用来分幅。完成分幅后,如果还觉得不满意,则用木画图工具修改裂块就行。应该很简单了,不会看不懂吧!
2种方法,
1. 将每个循环中生成的数据分别存起来,等循环结束后使用plot(sys1, sys2, ...)来同时画多张图;
2. 将曲线的颜色、线型写成矩阵,然后在每个循环中利用矩阵变量来使每张图具有不同的颜色等属性。
第二种方法,Matlab代码如下:
a_color = ['r', 'g', 'b', 'y', 'c', 'm', 'k']; %定义图形颜色
a_line_point = ['.', 'o', 'x', '+', '*', 's', 'd']; %定义点的形状
%a_line_style = ['-', ':', '-.', '--']; %定义线形,(none) no line
count=4:2:10;
for idx = 1 : length(count)
p3 = count(idx);
p4 = count(idx);
A_cl = conv([1 4 8], conv([1 p3], [1 p4]));
% 计算控制器C(s)的待定系数
A = [0 0 5 1; 0 5 -5 -4; 5 -5 0 -5; -5 0 0 0];
B = [A_cl(2)+4;A_cl(3)+5;A_cl(4);A_cl(5)];
X = inv(A)*B;
p_0 = X(1);
p_1 = X(2);
p_2 = X(3);
l_0 = X(4);
% 得到控制器C(s)
a1=[p_2 p_1 p_0];
b1=[1 l_0 0];
c = tf(a1,b1);
% 计算控制对象的nominal transfrom function P0(s)
a2=[5 -5];
b2=[1 -4 -5];
p = tf(a2,b2);
%计算闭环传递函数
% Define the complementary sensitivity functions(close-loop transform function)
sys1 = c*p;
T_o = feedback(sys1,1);
%绘制闭环传递函数的阶跃响应
figure(1);
step(T_o, a_color(idx)); %利用矩阵变量来使每张图具有不同的颜色等属性
%step(T_o, strcat(a_color(idx), a_line_point(idx), '-')); %添加点的不同表示
name = strcat(a_color(idx), ': p_{3,4}=', num2str(p3));
title('Unit Step Response');
text(3, 6-idx, name);
axis([-0.1 3.6 -6 +6]);
grid on;
hold on
%绘制闭环系统的control input
S_uo = feedback(c,p);
figure(2);
step(S_uo, a_color(idx)); %利用矩阵变量来使每张图具有不同的颜色等属性
name = strcat(a_color(idx), ': p_{3,4}=', num2str(p3)); title('Control Input');
text(1.8, 50-5*idx, name);
axis([-0.1 2 -30 +50]);
grid on
hold on
end
自动生成?
matlab怎样将两张图放到一张图上
1、在命令行中,输入“holdon”语句,这个命令的作用是告诉MATLAB在当前图形窗口保持绘制模式,不会覆盖之前绘制的图像,方便添加新的图形元素。这一步就像在画布上放置画框,准备添加下一张图。2、接下来,你可以开始绘制你的第一个函数,这会作为基础图层显示在窗口上。绘制完毕后,由于之前设置了"hold...
matlab如何将一个矩阵转成特定维的?
1、B = reshape(A,m,n)2、B = reshape(A,m,n,p,...)3、B = reshape(A,[m n p ...])4、B = reshape(A,...,[ ],...)5、B = reshape(A,size)reshape是一种函数,函数可以重新调整矩阵的行数、列数、维数。
matlab怎么将一个点数据等分?
1、首先双击matlab软件图标,打开matlab软件,可以看到matlab软件的界面。2、然后使用直接输入法,创建向量,就是讲向量的每个元素输入到中括号中。3、使用冒号表达式创建向量,具体的表达式如下:A=first:step:end。其中first表示向量的第一个元素,step表示步长,end表示向量的最后一个元素。4、使用函数linsp...
怎样用matlab将一幅图像转化为灰度图像
1、首先在电脑上打开matlab程序,然后输入指令【 clear; clc;】,进行清屏。2、然后将准备好的图片复制到matlab的工作目录中。3、在主界面输入指令【data=imread('文件夹图标.bmp');】,将图片转换成数据。4、然后双击工作空间中的data,就可以看到图片数据的具体信息。5、 输入指令【imshow(data);...
Matlab怎么将一个函数作为参数传到另一个函数里进行处理?
在c\/c++中,可以使用函数指针来实现,在matlab中,使用函数句柄.这时类似于函数指针的一项功能.例如:自定义一个函数如下,这个myfun.m函数是将要当做参数用的.function f=myfun(x)f=x.^2;你知道这个.m文件要放在哪里才能调用是吧.下面这个函数的参数就是函数:function g=fun(f)g=f(2)+f(3);然后...
如何用matlab将一组数值保存在数组中
1、首先在自己的电脑上打开matlab,创建一个空数组xx,和一个for循环,如下图所示。2、然后输入代码,如下图所示。3、运行脚本,可以看到将for循环的数据全部存入到xx数组中了,如下图所示。4、接着输入代码,如下图所示。5、执行脚本之后,可以看到把for循环中的数据存入到数组中了,主要是通过xx(i...
MATLAB如何将一个8192*128个十进制数据全部转换十六进制?
数据输入部分省略,处理数据部分代码主要使用sprintf或者是dec2hex,再加上reshape就可以了,以随机整数为例 src=floor(rand(4,3)*10);disp('src为4×3的整数矩阵');disp(src);z10to16=@(src)reshape(sprintf('%02x ',src')',size(src',1)*3,size(src',2))';disp('z10to16是通用的转换...
matlab如何将一组数据的概率密度函数与频数直方图画在一起?
1、首先,我们随机产生三组范围不同的数据,数据量都为500,他们的边界分别为[10,15],[23,38],,[38,58]。2、分别画出x1,x2,x3对应的曲线,用MATLAB的内置函数plot进行操作,分别用三个plot进行绘图。3、需要用一个语句来保留前面所绘制的图,在需要保留的图的后面加一句hold on,即可将该...
matlab怎样将两张图放到一张图上
1、首先,双击打开MATLAB软件,如下图所示。2、其次,进入命令行输入窗口界面,如下图所示。3、接着,编写代码,使用“hold on”语句实现本例子中的功能,如下图所示。4、最后,绘制第一个函数后,使用“hold on”以绘制第二个函数即可,如下图所示。这样,就将两张图放到一张图上了。
matlab 怎么样将一组数据按由大到小的顺序排列?
对于数据的从大到小的排列可以直接使用MATLAB的内置函数进行:假设数据为A n = 10;A = rand(1, n);B = sort(A); % B 为数据从小到大排列
励饱维库: 在有些程序中由于图像过大,常常需要我们将图像切割成几个比较小的图案之后在进行相关的处理.[plain] view plain copy print?Img=imread('sssd.png'); imgsize=size(Img) subimg_width=600; subimg_height=1000; num_width_spilt=ceil(imgsize(1...
大同区18624626995: matlab怎么把一幅图片平分成若干份 - ?
励饱维库: 可以用下面语句逐个分割、显示: newim=imcrop(imname,[xmin ymin width height]); subplot(1,3,..) imshow(newim)
大同区18624626995: 在matlab中使用subplot函数,如何可以在把一张图分成五块,第一行两条曲线,第二行三条曲线 - ?
励饱维库: x=-2:0.01:2; subplot(2,3,1);plot(x,x.^2); subplot(2,3,2:3);plot(x,sin(x));%合并窗口 subplot(2,3,4);plot(x,cos(x)); subplot(2,3,5);plot(x,tan(x)); subplot(2,3,6);plot(x,cot(x));
大同区18624626995: 怎样利用matlab对一幅图像进行分块以及重组? - ?
励饱维库: 用col2im函数就行,1. 如果是将图像分割成zhidao块的时候用的im2col参数为'distinct',那么用col2im函数时参数也是回'distinct', 2. 如果分割图像答的时候参数为'sliding',那么用需要用reshape+accumarray函数解决.
大同区18624626995: matlab怎么将一张图片分为几部分去处理啊? - ?
励饱维库: 图片读成矩阵然后把矩阵划分成几个部分,然后处理.
大同区18624626995: 用matlab怎么把图像分成许多小块?
励饱维库: 图形独到MATLAB里是个矩阵,可以先将矩阵分割,再输出.
大同区18624626995: 如何用matlab在一幅图中分割出两种不同的东西 - ?
励饱维库: 直接用矩阵操作就可以了,用imread读取图像,读取的结果在matlab中就是一个矩阵,然后用imwrite把你需要的部分写到新的文件中. 例如(时间有限,仅写了灰度图像的一部分): i=imread('source.bmp'); n=ndims(i); %获得图像维数,如果是2就是灰度图像,3是彩色图像,需要分别处理 if n==2 [x,y]=size(i); %求图像大小 imwrite(i(1:round(x/4),1:round(y/4)),'file.bmp','bmp'); end 这样就把图像分成4*4,最左上角的图像保存到file.bmp中了. 思路大致如此,手头没有matlab,上班ing,供你参考. 以上.
大同区18624626995: 怎样用matlab对两幅图像进行分块 - ?
励饱维库: 1种情况:横向重叠知 找到重叠的那一行就行了,然后去除多余部分 for ii=1:m if a(ii,:)==b(ii,:) result=a的上道半部分+b的下内半部分; end end 2种情况:纵向重叠 找到重叠的那一列容就行了,然后去除多余部分
大同区18624626995: 你好,我想问一下你有怎么把一幅图像分成M*N个小块matlab程序么. 我邮箱jiangtianamber@163.com - ?
励饱维库: 你没有给图像,我只能给你说说大概的步骤了.1.首先把图像读进来,用A=imread()函数,2.然后看看图像的大小,用[m,n]=size()函数,3.你要M*N个小块,那就看看每个小块内有多少点,用m_p=m/M;n_p=n/N;4.再之后就是切割矩阵了,比如B=[1:m_p,1:n_p]就取得了第一个小块,以此类推,可一个写个两层的for循环.
大同区18624626995: matlab中一张图片中三个图形,怎么分别提取出来 - ?
励饱维库: 说得不明白,是三个图形并排、重合、还是像电影片的frames呢?图片格式是什么?