1
这是我第一次与Julia在30分钟内。逆序排列/诊断矩阵julia
目标是找出矩阵的两个对角线(左上角 - >右下角和右上角 - >左下角)的内容。 Julia对我来说是新手,所以我的方法是颠倒原始矩阵的列,以便我可以在两者上使用diag
函数。
以下代码重新排列列。
state = [ 0 1 2; 1 2 0; 0 2 1]
result = zeros(3,3)
for col=[1:3]
result[:, col] = state[:,4-col]
end
我可以确认代码做我想做的事情。
> println(state)
[0 1 2
1 2 0
0 2 1]
> println(result)
[2.0 1.0 0.0
0.0 2.0 1.0
1.0 2.0 0.0]
而且我可以找到我想要的两个对角线。
> println(diag(state))
[0,2,1]
> println(diag(result))
[2.0,2.0,0.0]
感觉就像我可以通过一行或通过本机功能做到这一点,我没有在文档中找到它。反向列的for循环和两个diag调用的使用看起来像我正在重复一下自己。
什么是最好的(pythonic但juliathonic)实现我想要的方式?这样做的
列表理解,很好。当我用你的方法颠倒列的顺序时,输出看起来有点不同。 '''A = [0 1 2; 2 2 2; 0 1 2]'''println'''[0 1 2 \ n 2 2 2 \ n 0 1 2]'''while'''M = [A [:,4-i] for i = 1 :3]'''println'''[[2,2,2],[1,2,1],[0,2,0]]'''这两种类型的印刷品是否有区别? – cantdutchthis 2014-10-01 20:59:07
是的,你正在切片,所以你得到一组数组。 – StefanKarpinski 2014-10-02 05:35:53