Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Can't pass cell array with shape of [N, 1] to matlab from Python

オープン
#61 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
38/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
python
領域
tooling

調査の方向性

Start with the Python MWE using start_instance, loadcase, workspace, and the MATLAB engine, then compare the native and round-trip bus_name sizes. Done means a nested [N, 1] cell array remains [N, 1] when passed from Python back to MATLAB and the runpf round trip succeeds.

索引モデルが issue の本文から書いたものです。

説明

Nested list of shape [N, 1] is passed as [1, 1], causing error array cell dimension. From matlab, cell array [N,1] is passed to Python as list [N], but send it back will make it into [1, N]. Nested [N, 1] from Python will be treated as [1, 1]

Python MWE:

from matpower import start_instance
m = start_instance(engine="matlab")

CASE_NAME = "case_RTS_GMLC.m"

m.eval(f"mpc_native = loadcase('{CASE_NAME}');", nargout=0)
print("MATLAB native class:", m.eval("class(mpc_native.bus_name)", nargout=1))
print("MATLAB native size :", m.eval("size(mpc_native.bus_name)", nargout=1))

mpc = m.loadcase(CASE_NAME)

bus_name = mpc["bus_name"]
print("Python type      :", type(bus_name))
print("First entry      :", bus_name[0])
print("First entry type :", type(bus_name[0]))
mpc["bus_name"] = np.atleast_2d(mpc["bus_name"]).tolist()

m.workspace["mpc_rt"] = mpc
print("Round-trip class   :", m.eval("class(mpc_rt.bus_name)", nargout=1))
print("Round-trip size    :", m.eval("size(mpc_rt.bus_name)", nargout=1))

m.eval("runpf(mpc_native);", nargout=0)  # success due to correct cell shape
m.eval("runpf(mpc_rt);", nargout=0)  # fail due to [[1.0,1.0]] array for bus_name

m.exit()
MATLAB native class: cell
MATLAB native size : [[73.0,1.0]]
Python type      : <class 'list'>
First entry      : ABEL
First entry type : <class 'str'>
Round-trip class   : cell
Round-trip size    : [[1.0,1.0]]
主要言語
Python
スター
97
フォーク
13
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

mathworks/matlab-engine-for-python のほかの issue

mathworks/matlab-engine-for-python の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。