MATLAB几个简单问题求解,好的话加分啊

MATLAB几个简单问题求解,好的话加分啊,第1张

1、没看明白题意

2、命令为x=0:01pi:4pi,解释:0表示起始值,01pi表示步长,4pi表示终止值;若01pi空着,即指令为x=0:4pi,则步长默认为1,以0为初值,x的范围不超过4pi,例如x=1:25,则x=[1 2],注意pi为matlab里表示π的常量。

3、x=logspace(0,2,3)生成x=[1 10 100];该指令表示对范围[0,2]均匀分成三个值0、1、2,然后以10为幂,对他求0、1、2的指数,即10^0=1,10^1=10,10^2=100;

4、指令为A=[4 2 3 4;16 6 7 8;9 10 11 12;1 14 15 5],B=A(:,[1,3]);首先通过第一条指令可得A为44的矩阵,第二条指令的(:,[1,3])是以中间的逗号(第一个逗号)为分界,逗号前面为指定所选取的行的范围,后面为所选取的列的范围,该:(冒号)表示取A矩阵的所有行,等价于B=A(1:end,[1,3]);1:end表示取第一行到最后一行,相应的[1,3]表示取A矩阵的第一列和第三列,

5、 A=linspace(2,18,9)跟x=logspace(0,2,3)类似,只不过前者是线性划分,后者是指数划分,同理该指令先将[2,18]均匀分成9个值,由于是取线性值,所以结果仍为这9个值

指令B=reshape(A,3,3)表示把矩阵A作为对象,将A整合为33的矩阵,赋值给B,整合方式为按元素序号来排列,A中第一个元素为2,第二个元素为4,。。。以此类推第九个元素为18。而二维矩阵是按列来排序的,即数完第一列,才能数第二列,

可以看到A和B中序号相同的元素也相等,只是两者的矩阵结构不一样而已,A是19的矩阵,B是33的矩阵,但是你会发现19=33,这也是reshape指令应用的注意地方。

为了解你这道题,我又重新把运筹学又看了一遍,然后去matlab论坛找解决方案最终得出指派矩阵如下:1
0
0
0
00
0
1
0
00
1
0
0
00
0
0
1
00
0
0
0
1最优值为22ps:如果手动解的话,可以采用匈牙利算法,但是不提倡使用手动求解将相应的算法变成程序,用的时候直接调用程序比较方便(如参加数学建模的时候,这类程序最好提前准备)另外,像这种比较专业的问题,我建议你去专业论坛去问或查看一些帖子对你一定非常有帮助matlab程序如下(非原创):>>
c=[3
8
2
10
12;8
7
2
9
7;6
4
2
7
5
8
4
2
3
5;9
10
6
9
10];
c=c(:);
a=zeros(10,25);
for
i=1:5
a(i,(i-1)5+1:5i)=1;
a(5+i,i:5:25)=1;
end
b=ones(10,1);
[x,y]=bintprog(c,[],[],a,b);
x=reshape(x,[5,5]),y

Python发展至今,已经有越来越多的人使用python进行科学技术,NumPY是python中的一款高性能科学计算和数据分析的基础包。
ndarray
ndarray(以下简称数组)是numpy的数组对象,需要注意的是,它是同构的,也就是说其中的所有元素必须是相同的类型。其中每个数组都有一个shape和dtype。
shape既是数组的形状,比如
复制代码
1 import numpy as np
2 from numpyrandom import randn
3
4 arr = randn(12)reshape(3, 4)
5
6 arr
7
8 [[ 098655235 120830283 -072135183 040292924]
9 [-005059849 -002714873 -062775486 083222997]
10 [-084826071 -029484606 -076984902 009025059]]
11
12 arrshape
13 (3, 4)
复制代码
其中(3, 4)即代表arr是3行4列的数组,其中dtype为float64
一下函数可以用来创建数组
array将输入数据转换为ndarray,类型可制定也可默认
asarray将输入转换为ndarray
arange类似内置range
ones、ones_like根据形状创建一个全1的数组、后者可以复制其他数组的形状
zeros、zeros_like类似上面,全0
empty、empty_like创建新数组、只分配空间
eye、identity创建对角线为1的对角矩阵
数组的转置和轴对称
转置是多维数组的基本运算之一。可以使用T属性或者transpose()来实现。T就是进行轴对换而transpose则可以接收参数进行更丰富的变换
复制代码
arr = nparange(6)reshape((2,3))
print arr
[[0 1 2]
[3 4 5]]
print arrT
[[0 3]
[1 4]
[2 5]]
arr = nparange(24)reshape((2,3,4))
print arr
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
print arrtranspose((0,1,2))
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
复制代码
数组的运算
大小相等的数组之间做任何算术运算都会将运算应用到元素级别。
复制代码
1 arr = nparange(9)reshape(3, 3)
2 print arr
3
4 [[0 1 2]
5 [3 4 5]
6 [6 7 8]]
7
8 print arrarr
9
10 [[ 0 1 4]
11 [ 9 16 25]
12 [36 49 64]]
13
14 print arr+arr
15
16 [[ 0 2 4]
17 [ 6 8 10]
18 [12 14 16]]
19
20 print arr4
21
22 [[ 0 4 8]
23 [12 16 20]
24 [24 28 32]]
复制代码
numpy的简单计算中,ufunc通用函数是对数组中的数据执行元素级运算的函数。
如:
复制代码
arr = nparange(6)reshape((2,3))
print arr
[[0 1 2]
[3 4 5]]
print npsquare(arr)
[[ 0 1 4]
[ 9 16 25]]
复制代码
类似的有:abs,fabs,sqrt,square,exp,log,sign,ceil,floor,rint,modf,isnan,isfinite,isinf,cos,cosh,sin,sinh,tan,tanh,
add,subtract,multiply,power,mod,equal,等等

方法1:
采用reshape处理。
方法2:
采用:squeeze 处理。
方法3:
在定义的时候,抽取元素形式为A=B(:,:,i)。

1matlab中三维数组顺序是:行、列、页。二维数组只有行、列。如果两只之间赋值,有一个维数缩减问题需要注意。

前者可以缩减为二维,而后者不能缩减为二维的主要原因就在于,三维矩阵中,第一维度代表行,第二维度代表列,第三维度代表页,当第三维度为1时,代表只有1页,自然缩减为二维。当第一维度为1时,代表只有一行,但是每页都有。

2matlab中三维数组顺序是:行、列、页。二维数组只有行、列。如果两只之间赋值,有一个维数缩减问题需要注意。

前者本来也应该算是三维的,可以缩减为二维,而后者不能缩减为二维的主要原因就在于,三维矩阵中,第一维度代表行,第二维度代表列,第三维度代表页,当第三维度为1时,代表只有1页,自然缩减为二维。当第一维度为1时,代表只有一行,但是每页都有。

从文件读入的数据是1401个元素,你想把它reshape成1111的数组,这是121个元素,当然是不可行的。reshape不能改变数组的元素数量。
另外,X、Y是101101的数组,分别有10201个元素,上一步即使可以reshape,下面的画图也是行不通的。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13410554.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-30
下一篇 2023-07-30

发表评论

登录后才能评论

评论列表(0条)

保存