1、首先创建一个数组或矩阵,如在MATLAB命令窗口中输入代码,如下图所示。
2、数组创建好后,就可以进行数组或矩阵索引了,索引数组或矩阵时可以精确索引某行某列的元素,如我们在MATLAB命令窗口中输入代码。
3、需要索引出上面第2行第3列的元素还可以使用线性索引,即输入单值索引,是按单一下标按顺序向下遍历每一列。如果数组或矩阵较大的话可以先计算数组或矩阵的大小,然后利用尺寸进行帮助我们计算。
4、在索引数组或矩阵的时候注意不要索引超过矩阵或数组的大小,否则会程序报错,可以使用size或length先计算好数组或矩阵的大小。
5、最后关于创建等距数组或矩阵,可以使用格式 start:step:end来创建,在命令窗口中输入代码,如下图所示,就创建完成了。
x=1200:400:4000;
y=1200:400:3600;
[xx,yy]=meshgrid(x,y);
zz=[
1130,1250,1280,1230,1040,900,500,700;
1320,1450,1420,1400,1300,700,900,850;
1390,1500,1500,1400,900,1100,1060,950;
1500,1200,1100,1350,1450,1200,1150,1010;
1500,1200,1100,1550,1600,1550,1380,1070;
1500,1550,1600,1550,1600,1600,1600,1550;
1480,1500,1550,1510,1430,1300,1200,980;
]; %自己检察数据
surf(xx,yy,zz);
hold on;
[c,h]=contour(xx,yy,zz,6);
clabel(c,h)
%你这种方式画分段函数是新手常犯的错误,注意x<a,这种形式不是一个一个对x元素判断的。
%如果x是一个矩阵(向量),那么x<a,会返回一个同维0,1矩阵,其中满足条件的元素为1
%而if x < a 除非返回矩阵中的元素全为一,否则结果不会为真,这也就是你肯定执行
%else的原因
%下面我以0<=x<=1,y=x,1<=x<=2,y=x^2为例画分段函数,你对应着改就行
clear
clc
%方法一,分段分别画,然后用hold on将图像保持在同一个axes中
%保持在同一个坐标轴中还可以用set(gca,'Nextplot','Add')命令
x1 = linspace(0,1,30);
y1 = x1;
x2 = linspace(1,2,30);
y2 = x2^2;
plot(x1,y1)
hold on
%或者
% set(gca,'Nextplot','Add')
plot(x2,y2)
%方法二,巧用判断条件
x = linspace(0,2,60);
y = x(x>=0)(x<=1) + x^2(x>1)(x<=2);
plot(x,y)
%方法三,使用矩阵索引
x = linspace(0,2,60);
x1 = x(x>=0&x<=1);
x2 = x(x>=1&x<=2);
y1 = x1;
y2 = x2^2;
plot(x1,y1)
set(gca,'Nextplot','Add');
plot(x2,y2)
%注意这时第一个线段最后一个元素和第二个线段第一个元素没连在一起,如果需要连
%使用如下语句
line([x1(end) x2(1)],[y1(end) y2(1)])
%方法四,将原分段函数编为一个m函数,然后使用for循环求出函数值,最后画图
%这种方法虽然易懂,但速度慢不推荐
x = linspace(0,2,60);
y = zero(size(x));
for fi = 1:size(x,2)
y(fi) = myfun(x(fi)); %myfun为自己定义的分段函数
end
plot(x,y)
%myfun函数清单如下
function y = myfun(x)
if x >= 0 & x <= 1
y = x;
else
y = x^2;
end
end
以上基本就是matlab中所有画分段函数的方法,其中强烈推荐方法二,但是当分段较多时,这种方法不是很直观。当分段较多时,推荐使用方法三,分别将符合各段的自变量提出,然后分别求出y。进行绘图。当分段不是不多也不少时,推荐使用方法一分段定义x,然后求出y绘图。均为个人经验总结。
你这道题使用方法二解法如下:
%%clear
clc
x = -5:2:5;
y = (x^3-x5)(x<0)(x~=-3) + (x^2-x5+6)(x>0)(x<5)(x~=2)
(x~=3) + (x^2-x-1)((x==-3)|(x==2)|(x==3)|(x==5))
plot(x,y)
y =
-100 11 4 2 5 19
x-y图如下:
可以看出当分段较多时,该方法虽然运算较快,但不是很直观。这时可以考虑使用方法四,即for循环的方式,分别求出y,然后绘图,这里不再演示了。
是这样的,如果你再程序开始添加holdon这个的画,表示这之后的每一次作图都保留以前的图,这样就可以连续画图了
反之holdoff,表示打开这个之后,每次画图,删除以前的图,
%m为均值,s为方差
a=2;
b=10;
n=1000;
p=rand(1,n)(b-a)+a;
m=mean(p);%均值
s=std(p);%方差
xi = linspace(a-1a-1,b+1b+1,200);
cdf = ksdensity(p,xi,'function','cdf');
pdf = ksdensity(p,xi,'function','pdf');
plot(xi,cdf,'b',xi,pdf,'r');
grid on
legend('概率密度曲线','概率分布曲线','Location','East')
title('均匀分布的概率密度曲线和概率分布曲线')
matlab的fsolve函数可以这样来改所求的函数。
1、用函数体,自定义所求的函数。即
function y=fun(x)
具体的函数表达式
end
2、初定x的初值,即
x0=[x01,x02,x03,]
3、用fsolve函数求其数值解,即
[x,fval,exitflag] =fsolve(fun,x0)
当exitflag=1时,说明求解成功。x是方程的数值解,fval是函数值
以上就是关于如何在MATLAB中建立等距数组或矩阵全部的内容,包括:如何在MATLAB中建立等距数组或矩阵、求matlab程序实现、matlab程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)