H***a 发帖数: 735 | 1 现有2个vecter: x和y,分别存放数组A里某个元素的行和列坐标,比如:
x=[1:3] --> x = 1 2 3
y=[1:3] --> y = 1 2 3
A=[1:3;4:6;7:9] -->
A = 1 2 3
4 5 6
7 8 9
现在希望能用A(x,y)实现类似"diag(A) = 1 5 9"的功能,但显然Matlab并不会把x,y一
一对应填入坐标,而是自动充满,即A(1:3,1:3),所以输出整个A。 请问如何才能用x,y
来实现呢?谢谢。
| t****t 发帖数: 6806 | 2 你知道A的尺寸就可以啊.
A((x-1)*3+y)=whatever_you_want
,y
【在 H***a 的大作中提到】 : 现有2个vecter: x和y,分别存放数组A里某个元素的行和列坐标,比如: : x=[1:3] --> x = 1 2 3 : y=[1:3] --> y = 1 2 3 : A=[1:3;4:6;7:9] --> : A = 1 2 3 : 4 5 6 : 7 8 9 : 现在希望能用A(x,y)实现类似"diag(A) = 1 5 9"的功能,但显然Matlab并不会把x,y一 : 一对应填入坐标,而是自动充满,即A(1:3,1:3),所以输出整个A。 请问如何才能用x,y : 来实现呢?谢谢。
| k**f 发帖数: 372 | 3
,y
try this:
x=1:3; y=1:3; k=sub2ind([3, 3], x, y]; A(k) = k;
【在 H***a 的大作中提到】 : 现有2个vecter: x和y,分别存放数组A里某个元素的行和列坐标,比如: : x=[1:3] --> x = 1 2 3 : y=[1:3] --> y = 1 2 3 : A=[1:3;4:6;7:9] --> : A = 1 2 3 : 4 5 6 : 7 8 9 : 现在希望能用A(x,y)实现类似"diag(A) = 1 5 9"的功能,但显然Matlab并不会把x,y一 : 一对应填入坐标,而是自动充满,即A(1:3,1:3),所以输出整个A。 请问如何才能用x,y : 来实现呢?谢谢。
| t****t 发帖数: 6806 | 4 这个好, 呵呵
【在 k**f 的大作中提到】 : : ,y : try this: : x=1:3; y=1:3; k=sub2ind([3, 3], x, y]; A(k) = k;
| H***a 发帖数: 735 | 5 谢谢,总能很快得到你的回答:)
【在 t****t 的大作中提到】 : 你知道A的尺寸就可以啊. : A((x-1)*3+y)=whatever_you_want : : ,y
| H***a 发帖数: 735 | 6 非常感谢!!原来有这么好的函数啊,扩展到多维的也非常方便,太赞了!!
【在 k**f 的大作中提到】 : : ,y : try this: : x=1:3; y=1:3; k=sub2ind([3, 3], x, y]; A(k) = k;
| r****t 发帖数: 10904 | 7 这个有什么好,你看 python 里面是这么写的,(和你前面叙述问题用的语法一样)
A[x,y] = [1,5,9]
多维也是一样,哪里需要什么 sub2idx 这种澳口的东西。
【在 H***a 的大作中提到】 : 非常感谢!!原来有这么好的函数啊,扩展到多维的也非常方便,太赞了!!
| r****t 发帖数: 10904 | 8 再多嘴一句,世界上不是所有数据都是 matrix (matlab 假设单个数字也是一个 matrix),
但是除了单个的数字以外,array 是很普遍的数据 (numpy 的假设,matrix 只是 ndarray
的一个 subclass).
【在 r****t 的大作中提到】 : 这个有什么好,你看 python 里面是这么写的,(和你前面叙述问题用的语法一样) : A[x,y] = [1,5,9] : 多维也是一样,哪里需要什么 sub2idx 这种澳口的东西。
|
|