MENU
7,364

スレッドNo.4

r2spice関数でのエラー

お世話になります。初めて投稿させていただきます。
8012を用いた真空管アンプのシミュレーションを行いたく思い、
中林様のRで書かれた関数を用いて、Spiceモデルを作成しようと思っています。
8012のデータシートをWebからDLして、Eg、Ep、IpのCSVファイルを作成し、
Ip.cal関数を実行しました。その後、r2spice関数を実行しましたが、
添付画像のようなエラーが起こってしまい、作成できませんでした。
何か操作上で問題があるのでしょうか?アドバイスを頂戴できれば、幸甚です。
よろしくお願い申し上げます。

引用して返信編集・削除(未編集)

Jackie Macさん

こちらで同様にモデルの作成を行ってみましたが、エラーは出ませんでした。
以下の状況をお知らせください。
下に私の環境で実行した例を載せてあります。

OS: (コントロールパネル -> システムとセキュリティ -> システム の Windowsの仕様)
R: (Rを起動したときに最初に表示されるバージョン)
Rの入出力文字コード(encoding): (Rに対して getOption("encoding") で返される値、下記参照)
pctube.rの取得元: (書籍に付いているものか、Webサイトから取得したものか)
モデルのデータ:
Rの起動からSPICEモデル作成までの状況:
(この掲示板では大きな画像は勝手に縮小されるので、スクリーン全体ではなく、
必要最小限の範囲に切り取るか、下記のようにテキストをコピー&ペーストしてください)

#### 私の環境の例 ####
OS: Windows 10 Home version 22H2 build 19045.5011
R: version 4.3.2 (2023-10-31 ucrt)
Rの入出力文字コード(encoding): cp932
pctube.rの取得元: http://ayumi.cava.jp/audio/pctube_1.21_win.zip
モデルのデータ: 12AU7.csv (上記 .zip に入っているもの)
Rの起動からSPICEモデル作成までの状況:
(略)
'q()' と入力すれば R を終了します。

[以前にセーブされたワークスペースを復帰します]

> getOption("encoding")
[1] "cp932"
> source("pctube.r")
> Ip.cal("12AU7.csv", "t12AU7", Cgp=1.5e-12, Ci=1.6e-12, Co=0.4e-12)
Read 153 items
code=0 err=0.02626518
> r2spice(t12AU7, "t12AU7", "t12AU7sample")
Writing spice/tubemodel/t12AU7sample.inc
Writing simetrix/tubemodel/t12AU7sample.mod
Writing tina/tubemodel/t12AU7sample.inc

引用して返信編集・削除(未編集)

tsu-3様

ハンドルネームを間違いてしまい、大変失礼いたしました。
どうか、ご容赦ください。

tsu-3様がご使用になっているR(バージョン4.1.2)に戻して、
もう一度実験してみました。

するとpctube.rの文字コードを変更せずに、ロードできました。
しかし、やはりr2spiceではエラーが出てしまいました。
ただ、エラーメッセージにはp$alphaは存在せず、
オブジェクトは表示されませんでした。

ということは、p<-Ip.sub()の実行結果は戻されていない、
つまりIp.sub関数で不具合が発生しているということだと思います。

pctube.rを見てみましたがよくわからないので、
中林さんのWebページのモデルの理論から勉強してみます。
いろいろアドバイスをいただき、ありがとうございました。
何か進展がありましたら、再度投稿させていただきます。

引用して返信編集・削除(未編集)

8/23に回答したtsu-3です(中林さん本人ではありません)。
pctube.r作成者ではなく、Rにも詳しくないため、適切なアドバイスができなく申し訳ありません。

さて、オブジェクトが正しくできているようなので、Ip.calは正しく実行できていると推測されます。
また、
> ちなみに今年の初めに実行したときは問題なくモデルを作成できました。
とのことなので、r2spiceの実行方法に誤りはないと思われます。
今年の初めには問題なかった状況が、現在は再現できないということだと思いますので、
やはりPC環境が怪しいですね。
私の環境は、Windows 10 Home バージョン22H2 で、
Rは、R x64 4.1.2 です。文字コードの変更などはしていません。

あとは、スクリプトpctube.rのどこでエラーになっているかがわかれば解決の糸口に
なるかもしれません。
ちなみに、私が調べたところ、スクリプトpctube.rで、
`r2spice` <-
function(p, mn, fn, mode="triode", ...)
のところで、r2spiceを実行。
ここのfunction定義で、パラメータpに指定したオブジェクト名が代入され、
14-15行下の
a <- 1/(1 - p$alpha)
から各モデルパラメータに値を代入、
という感じです。

引用して返信編集・削除(未編集)

お世話になります。
昨日の実験結果について、ご報告します。

R(バージョン4.3.1 Windows版)を再インストールして、pctube.r(タイムスタンプは2016/03/31)を
ロードしようとしても、マルチバイトのエラーが出てロードできませんでした。
そこでterapadでputube.rの文字コードをSHIFT-JISからUTF8に変換したところロードできました。
(改行はCR+LFにしました。)
昨日と同様に、Ip.calでPlateSample.csvは読み込むことができ、Ep-Ipグラフも表示されました。
しかしr2spiceを実行すると昨日と全く同じエラーが出てしまいました。
Rをインストールしていない別のPCにR環境を構築して同じ実験をやってみましたが、
結果は同様でした。

原因の可能性として、
1.文字コードを変更したこと。
2.Rのバージョンが異なること。
3.OS(現行はWindows10 Pro バージョン22H2)の違い
などが考えられると思います。

ちなみに今年の初めに実行したときは問題なくモデルを作成できました。
小生、Rはわからないのですが、どのような方針で解決したらよろしいでしょうか?
アドバイスを頂戴出来れば嬉しいです。
よろしくお願い申し上げます。

引用して返信編集・削除(未編集)

中林様

お世話になります。ご回答、ありがとうございました。

> まず、Ip.cal実行時に指定したオブジェクト(txxx)ができているかどうか確認してみてはどうでしょうか。

ls()を実行したら、Ip.calで入力したオブジェクト名が表示されました。
さらに当該オブジェクトのデータを表示すると、$alphaが表示されました。
しかしr2spiceでは以前と同じエラーが出ました。

そこで、PlateCharaSample.csvをDLして同様の実験を行いましたら、
このデータでもr2spiceで同様のエラーが起こりました。
操作方法が悪かったため、Rまたはpctube.rが壊れたのかもしれません。
Rの再インストール、pctube.rの再DLして、やり直してみます。
結果は後日報告させていただきます。

お忙しいところ、大変ありがとうございました。
今後ともよろしくお願いします。

引用して返信編集・削除(未編集)

Ip.calはエラーなく実行でき、r2spiceでエラーになったということですね。
まず、Ip.cal実行時に指定したオブジェクト(txxx)ができているかどうか確認してみてはどうでしょうか。
> ls()
ですべてのオブジェクトがリストされますので、その中にあるかどうか確認します。
あれば、そのオブジェクトのデータを確認します。
> txxx
例えば、t12AX7の場合、
> t12AX7
$G
[1] 0.0007121151

$muc
[1] 88.4138

$alpha
[1] 0.4345514

$Ego
[1] 0.5983668

$Cgp
[1] 1.7e-12

$Ci
[1] 1.6e-12

$Co
[1] 4.6e-13

$Vp
[1] 300

$Pp
[1] 1

$Ik
[1] 0.008

$remark
[1] "Philips"

$err
[1] 0.03654938

$code
[1] 0

のように数値データが確認できます。
> t12AX7$alpha
とすればalphaの値だけ確認できます。
リストになければオブジェクトができていないことになります。
私はRについて詳しくありませんが、p$alphaでエラー ということは、
pという原子ベクター(r2spice実行時に指定するオブジェクト名)が正しくできていない可能性があります。

オブジェクトが正しくできているにもかかわらずエラーになる場合は、
サンプルデータ(PlateCharaSample.csvなど)でエラーなくできるか確認してみてはどうでしょうか。

引用して返信編集・削除(未編集)

> "Jackie Mac"さんが書かれました:
> お世話になります。初めて投稿させていただきます。
> 8012を用いた真空管アンプのシミュレーションを行いたく思い、
> 中林様のRで書かれた関数を用いて、Spiceモデルを作成しようと思っています。
> 8012のデータシートをWebからDLして、Eg、Ep、IpのCSVファイルを作成し、
> Ip.cal関数を実行しました。その後、r2spice関数を実行しましたが、
> 添付画像のようなエラーが起こってしまい、作成できませんでした。
> 何か操作上で問題があるのでしょうか?アドバイスを頂戴できれば、幸甚です。
> よろしくお願い申し上げます。

画像上のエラーメッセージは以下のようになっています。

p$alphaでエラー : $ operator is invalid for atomic vectors

またCSVファイル等が必要でしたら、ご連絡ください。
アドバイス、よろしくお願い申し上げます。

引用して返信編集・削除(未編集)

このスレッドに返信

ロケットBBS

Page Top