Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Quantum
提交
136cb1fa
Q
Quantum
项目概览
PaddlePaddle
/
Quantum
大约 1 年 前同步成功
通知
20
Star
492
Fork
166
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
5
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
Quantum
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
5
Issue
5
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
136cb1fa
编写于
11月 09, 2021
作者:
G
gsq7474741
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add utils.plot_density_graph v0.1
上级
7b61f772
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
77 addition
and
3 deletion
+77
-3
paddle_quantum/utils.py
paddle_quantum/utils.py
+37
-0
test_and_documents/readme.md
test_and_documents/readme.md
+11
-1
test_and_documents/test.py
test_and_documents/test.py
+29
-2
未找到文件。
paddle_quantum/utils.py
浏览文件 @
136cb1fa
...
...
@@ -34,6 +34,7 @@ import matplotlib as mpl
from
paddle_quantum
import
simulator
import
matplotlib.animation
as
animation
import
matplotlib.image
from
typing
import
Union
,
Optional
__all__
=
[
"partial_trace"
,
...
...
@@ -1726,6 +1727,42 @@ def decompose(matrix):
return
pauli_form
def
plot_density_graph
(
density_matrix
:
Union
[
paddle
.
Tensor
,
np
.
ndarray
],
size
:
Optional
[
float
]
=
.
3
)
->
plt
.
Figure
:
r
"""密度矩阵可视化工具。
Args:
density_matrix (numpy.ndarray or paddle.Tensor): 多量子比特的量子态的状态向量或者密度矩阵,要求量子数大于1
size (float): 条宽度,在0到1之间,默认0.3
Returns:
plt.Figure: 对应的密度矩阵可视化3D直方图
"""
if
not
isinstance
(
density_matrix
,
(
np
.
ndarray
,
paddle
.
Tensor
)):
msg
=
f
'Expected density_matrix to be np.ndarray or paddle.Tensor, but got
{
type
(
density_matrix
)
}
'
raise
TypeError
(
msg
)
if
isinstance
(
density_matrix
,
paddle
.
Tensor
):
density_matrix
=
density_matrix
.
numpy
()
if
density_matrix
.
shape
[
0
]
!=
density_matrix
.
shape
[
1
]:
msg
=
f
'Expected density matrix dim0 equal to dim1, but got dim0=
{
density_matrix
.
shape
[
0
]
}
, dim1=
{
density_matrix
.
shape
[
1
]
}
'
raise
ValueError
(
msg
)
real
=
density_matrix
.
real
imag
=
density_matrix
.
imag
figure
=
plt
.
figure
()
ax_real
=
figure
.
add_subplot
(
121
,
projection
=
'3d'
,
title
=
"real"
)
ax_imag
=
figure
.
add_subplot
(
122
,
projection
=
'3d'
,
title
=
"imag"
)
xx
,
yy
=
np
.
meshgrid
(
list
(
range
(
real
.
shape
[
0
])),
list
(
range
(
real
.
shape
[
1
])))
xx
,
yy
=
xx
.
ravel
(),
yy
.
ravel
()
real
=
real
.
reshape
(
-
1
)
imag
=
imag
.
reshape
(
-
1
)
ax_real
.
bar3d
(
xx
,
yy
,
np
.
zeros_like
(
real
),
size
,
size
,
real
)
ax_imag
.
bar3d
(
xx
,
yy
,
np
.
zeros_like
(
imag
),
size
,
size
,
imag
)
return
figure
def
img_to_density_matrix
(
img_file
):
r
"""将图片编码为密度矩阵
Args:
...
...
test_and_documents/readme.md
浏览文件 @
136cb1fa
通过在UAnsatz类中添加新的成员函数expand来实现扩展
-
通过在UAnsatz类中添加新的成员函数expand来实现扩展
-
增加utils.plot_density_graph密度矩阵可视化工具。
```
Args:
density_matrix (numpy.ndarray or paddle.Tensor): 多量子比特的量子态的状态向量或者密度矩阵,要求量子数大于1
size (float): 条宽度,在0到1之间,默认0.3
Returns:
plt.Figure: 对应的密度矩阵可视化3D直方图
```
\ No newline at end of file
test_and_documents/test.py
浏览文件 @
136cb1fa
...
...
@@ -2,6 +2,7 @@ from paddle_quantum.circuit import UAnsatz
from
paddle
import
kron
from
paddle_quantum.state
import
vec
,
density_op
import
paddle
import
unittest
#density_matrix
...
...
@@ -30,5 +31,31 @@ def test_state_vector():
cir2
.
run_state_vector
()
print
(
cir2
.
get_state
())
test_density_matrix
()
test_state_vector
()
class
TestPlotDensityGraph
(
unittest
.
TestCase
):
def
setUp
(
self
):
self
.
func
=
plot_density_graph
self
.
x_np
=
np
.
random
.
rand
(
4
,
4
)
+
np
.
random
.
rand
(
4
,
4
)
*
1j
self
.
x_tensor
=
paddle
.
to_tensor
(
self
.
x_np
)
def
test_input_type
(
self
):
self
.
assertRaises
(
TypeError
,
self
.
func
,
1
)
self
.
assertRaises
(
TypeError
,
self
.
func
,
[
1
,
2
,
3
])
def
test_input_shape
(
self
):
x
=
np
.
zeros
((
2
,
3
))
self
.
assertRaises
(
ValueError
,
self
.
func
,
x
)
def
test_ndarray_input_inputs
(
self
):
res
=
self
.
func
(
self
.
x_np
)
res
.
show
()
def
test_tensor_input
(
self
):
res
=
self
.
func
(
self
.
x_tensor
)
res
.
show
()
if
__name__
==
'__main__'
:
test_density_matrix
()
test_state_vector
()
unittest
.
main
()
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录