在matlab编程中,如何生成如下图的二维坐标矩阵?
发布网友
发布时间:2022-04-21 07:42
我来回答
共1个回答
热心网友
时间:2022-06-18 18:47
1、普通的数值矩阵的元素只能是一个数,不可能是这样的数对。要存储这样的数对,一般采用cell数组,例如:
>> [y,x]=meshgrid(1:4);
>> C=arrayfun(@(x,y)[x,y],x,y,'UniformOutput',false)
C =
[1x2 double] [1x2 double] [1x2 double] [1x2 double]
[1x2 double] [1x2 double] [1x2 double] [1x2 double]
[1x2 double] [1x2 double] [1x2 double] [1x2 double]
[1x2 double] [1x2 double] [1x2 double] [1x2 double]
>> C{3,2}
ans =
3 2
按照cell数组的显示方式,整体显示时不会直接显示向量的内容,需要按元素查看才行。
2、如果希望按照图中的包括括号和逗号的方式显示,可以用字符串表示数对:
>> [y,x]=meshgrid(1:4);
>> arrayfun(@(x,y)sprintf('(%i,%i)',[x,y]),x,y,'UniformOutput',false)
ans =
'(1,1)' '(1,2)' '(1,3)' '(1,4)'
'(2,1)' '(2,2)' '(2,3)' '(2,4)'
'(3,1)' '(3,2)' '(3,3)' '(3,4)'
'(4,1)' '(4,2)' '(4,3)' '(4,4)'
3、怎么样调用是由题主自己决定的,因为别人根本不知道你想调用了干什么。
追问看懂了 但是如楼主回答那样 C{3,2}= 3 2 如果想调用C{3,2}中的某一数值比如3 该如何操作?
追答
取cell数组的元素用花括号,取出来后是一个普通的数值向量,再取向量的元素用圆括号就行:
>> C{3,2}(1)
ans =
3