問題タブ [mathematica-8]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
image-processing - ComponentMeasurements [_、"Centroid"]結果のオフセット
サブピクセル精度のバイナリイメージのセット内のコンポーネントの重心(重心)を取得する必要があります。
Mathematica8には素晴らしい追加機能があります。
しかし、それらの結果が他の場所で行われた他の計算といくつかの矛盾を示したとき、私はいくつかの問題を経験しました。
だから私は自分自身を転がしました、おそらく良くありません:
これらの結果の間に.5オフセットがあることがわかります。
最初は、画像の寸法が偶数または奇数であることに問題があると思いましたが、そうではありません。
結果を使用して修正したいComponentMeasurements[ ..,"Centroid"]
のですが、将来のMmaバージョンではこの動作が変更され、結果が損なわれる可能性があります。
既知の画像を使用して以前の「キャリブレーション」を実行し、オフセットを計算することもできるので、自動修正されますが、最初に何が起こっているのかを理解したいと思います。
これはバグですか?
なぜこれが起こっているのかについてのアイデアはありますか?
c - GCCがインストールされています。Mathematica はまだ C にコンパイルできません
私はMacOSX上でMathematica 8を実行しており、最も単純なプログラムでさえCにコンパイルしようとしています.Cに関係するものはすべてMathematicaでは機能しません. GCC 4.2 がインストールされています。XCodeで何度も再インストールしました。これが私がやっていることと私が得ているエラーです:
まず、常にコマンドを評価します
コンパイル ターゲットを C に設定すると、
次のようなエラーが表示されます: Compile::nogen : コンパイルされた関数からライブラリを作成できませんでした。
ライブラリを作成しようとすると、
$Failedというメッセージが表示されます。Wolfram は、これは C コンパイラがインストールされていないためだと言っています。信じられない
GCC がインストールされていることがわかります: {{"Name" -> "GCC", "Compiler" -> CCompilerDriver'GCCCompiler`GCCCompiler, "CompilerInstallation" -> "/usr/bin", "CompilerName" ->自動}}
さらに、ターミナルにはGCCもインストールされていると表示されます!! どんな助けでも大歓迎です。Mathematica を C にコンパイルしたいと思っています。
wolfram-mathematica - 元のレイアウトの機能を維持しながら、小さな変更を加えた後の再レイアウト グラフ
Mathematica 8で次のことを行う簡単な方法はありますか?
- グラフを作成し、グラフ レイアウトを使用して表示します。
- グラフを少し変更します (たとえば、エッジまたは頂点を追加または削除します)。
- オブジェクトの「形状」が多かれ少なかれ保持されるように、元のレイアウトから開始してレイアウトを再計算します。たとえば、以前のレイアウトの座標から開始するスプリングエレクトリック レイアウト アルゴリズムを再実行します。
2 つのディスプレイ間でグラフが変更されていない場合、レイアウトも (または最小限に) 変更されるべきではありません。新品のディスプレイを使用しても、Graph
どちらでもGraphPlot
かまいません。
編集:本質的に、同様のグラフには同様のレイアウトが必要です。すでにレイアウトされている可能性のある既存のグラフを変更することで、常に同様のグラフを取得しますが、一般的なソリューションはすべて受け入れられます。
EDIT 2:この種のものが役立つ例を次に示します。http://ccl.northwestern.edu/netlogo/models/GiantComponentに移動し、[ブラウザーで実行] をクリックします (Java が必要)。[セットアップ] をクリックし、[実行] をクリックします。グラフが進化しているのがわかります。Mathematica でこれを行うと、連続するグラフのそれぞれが完全に異なって見え、進化しているのが同じグラフであることがわかりにくくなります。いくつかのアプリケーションでは、グラフの小さな変化を視覚化できると非常に便利です。しかし、多くの連続した変更が行われた場合、レイアウトの再計算は必須であり、単純にエッジをフェードまたはハイライトするだけでは十分ではありません。繰り返しますが、これは単なる例です。Mathematica を使用してグラフをアニメーション化したり、巨大なコンポーネントの出現を視覚化したりするつもりはありません。
wolfram-mathematica - Axes の代わりに Frame を使用すると BarChart がトリミングされない
ではなくBarChart
を使用すると、 a が切り取られる可能性があることがわかりました。Frame
Axes
例:
これは機能ですか、それともバグですか? それが機能である場合、クロッピングを防ぐ簡単な方法はありますか?
編集
リクエストごとのスクリーンショット:
wolfram-mathematica - 使用法メッセージの書式設定
Mathematica8のCombinatorica
パッケージを見ると、関数の定義が見つかります。私が知りたいのは、Mathematica が使用法メッセージをフォーマットする方法をどのように知っているかということです。正しいファイルを見ていないというメッセージが表示されます。いずれにせよ、次のことを試してみましょう。(mathematicapath)/AddOns/LegacyPackages/DiscreteMath/Combinatorica.m
この行は、上記のファイルの 682 行です。これを Mathematica ノートブックで実行して使用?Cofactor
すると、まったく同じメッセージが表示されます。しかし、パッケージを取得すると、メッセージはフォーマットされます。スクリーンショットは次のとおりです。
関数内の m、i、j がどのように変更され、メッセージに二重矢印が追加されたかに注意してください。ドキュメントが存在するため、メッセージに矢印が追加されたと思います。誰かがこの動作を説明できますか?
編集: これは、m ファイルに自動保存されるノートブック ファイルのスクリーンショットです。
ご覧のとおり、L
とM
は斜体の新ローマ時代です。次に、パッケージをロードして使用法を確認します。
ここまでは順調ですね。次に、ドキュメンテーション センターを見てみましょう。関数を探しますLineDistance
。
ご覧のとおり、奇妙なメッセージが表示されます。この場合、スタイルなしでメッセージを表示したいだけです。Combinatorica
パッケージがこれをどのように行うのかまだわかりません。これに従って、ドキュメント センターが概要を表示できるようにインデックスを作成しました。概要は、基本的に使用状況の表示です。もっと具体的に言う必要がある場合はお知らせください。
wolfram-mathematica - ノートブックをMathematicaのドキュメンテーションセンターに統合する
Mathematicaをしばらく使っているなら、おそらくドキュメンテーションセンターに愛着を持っているでしょう。それらのページには常に新しいものがあります。ある時点で役に立たなかった関数またはいくつかの例のオプションとします。
いつも使っている特殊な機能を使ってパッケージを書いている可能性があります。関数で使用するための優れた例を思いつくこともありますが、ハードディスクのどこかで忘れられてしまう可能性があります。あなたがそれを考えた瞬間にそれをドキュメンテーションに書いていたら、おそらく後で必死にそれを探すことはないでしょう。
このため、自分の関数のドキュメントをMathematicaのドキュメントセンターとプログラムで統合する方法を知りたいと思います。この質問は、ドキュメントを適応させる方法を探るためにここにあります。これを行うのに役立つスクリプトを作成した場合は、コミュニティと共有してください。
WolframのWorkbenchは、この質問に対する許容できる解決策ではありません。すべてはMathematicaのプレーンインストールで行わなければなりません。ソリューションがカバーすべきポイントがいくつかあります。
- 関数(できればテンプレート)のドキュメントを作成します。
- ガイドとチュートリアルの作成(有用と思われる場合)。
- ノートブックをドキュメントセンターにリンクします。
- さまざまな環境で正しく表示される「使用法」メッセージを作成します。
- Mathematicaノートブックで
?Symbol
- ドキュメンテーションセンター内
Search: Symbol
- Mathematicaノートブックで
これは非常に幅広いトピックです。1、2、3の解決策があります。ポイント番号4がありません。では、ドキュメントセンターで関数をどのようにドキュメント化するのでしょうか。
アップデート
別の答えを追加しました。うまくいけば、この答えがMathematicaのユーザーに彼らのパッケージでドキュメンテーションページを書くことをもっと励ましてくれるでしょう。ドキュメントページを書くことは、アプリケーションの作成者だけでなく、アプリケーションのユーザーにとっても有益だと思います。私が書いたパッケージをダウンロードする場合は、チュートリアルに従って、すべてのステップで何が起こるかを確認することをお勧めします。これはあなたに将来のプロジェクトのための貴重な経験を与えるでしょう。
Github(2014年5月24日)
私がパッケージを書いたので、このパッケージに興味を持っている何人かの人々がいました。パッケージをGithubにアップロードしました:https ://github.com/jmlopez-rod/ApplicationMaker 。リポジトリへの寄稿者になりたい場合は、私に連絡してください。
wolfram-mathematica - FittedModelの保存にはバグがあります
Mathematica 7と8では、Mathematicaが適切に保存してフィッティングルーチンの結果を取得できないことを発見しました。私はここの誰かが知っていることを望んでいます:このバグのベストプラクティスの回避策は何ですか?
私たちのタスクは、多くのデータセットをNonlinearModelFitでフィッティングすることです。これは、各データセットのFittedModelを返します。これらの適合にはしばらく時間がかかり、結果をファイルに記憶するためにSaveとDumpSaveを使用してみました。その後の分析では、Getを使用してFittedModelをプルバックします。
Mathematicaは警告なしにSave&Getを実行しますが、戻ってくるFittedModelにはバグがあります。Getを呼び出し、ディスクからFittedModelをロードし、結果を「foo」と呼びます。foo [10]を試すと、入力10で近似モデルが評価されます。バグは、foo ["BestFitParameters"]がルールのリストを返す必要があるが、代わりに10のような数値であるため文字列を関数にプラグインすることです。fooを試す[{"BestFitParameters"、 "BestFitParameters"}]は、リスト内でルールを2回指定する必要がありますが、バグのあるfooでは評価されません。
fooを削除/クリアするか、カーネルを終了するかによって、これに加えて奇妙で誤解を招く動作があります。
- FittedModelをfooとして計算します
- fooをディスクに保存またはダンプ保存
- fooを削除および/またはクリアする
- ディスクからfooを取得します
- fooは正常に動作します
しかし、カーネルを再起動すると失敗します
- FittedModelをfooとして計算します
- fooをディスクに保存またはダンプ保存
- カーネルを強制終了して再起動します
- ディスクからfooを取得します
- fooはバグが多い
誰かが以前にこの種の行動を見たことがありますか?
このバグの背後にある良い説明はありますか?
良い回避策はありますか?
wolfram-mathematica - Ruleおよび/から切り替えることの利点は何ですか。大規模なアプリケーションでOptionsPattern[]とOptionValueに?
古い習慣は一生懸命に死にます、そして私は私が現在開発している非常に大きなパッケージのopts___Rule
ようにパターンマッチングと構造を使用していることに気づきます。thisoption /. {opts} /. Options[myfunction]
Sal Manangoの「MathematicaCookbook」は、バージョン6以降のこれを行う方法がとであることを思い出させopts:OptionsPattern[]
ますOptionValue[thisoption]
。パッケージにはとにかくバージョン8が必要ですが、私はこの種のコードの書き方を何年にもわたって変更したことはありませんでした。
バージョン6以前の方法からすべてをリファクタリングする価値はありますか?パフォーマンスやその他のメリットはありますか?
よろしく
ヴェルベイア
編集:まとめ
この質問に対して多くの良い点がありましたので、ありがとうございました(もちろんプラス1つ)。要約すると、はい、使用するようにリファクタリングする必要がOptionsPattern
ありOptionValue
ます。(注:以前とOptionsPattern
は異なりOptionPattern
ます!)理由はいくつかあります。
- 少し速いです(@Sasha)
HoldForm
引数が(@Leonid)になければならない関数をより適切に処理しますOptionsPattern
その関数に有効なオプションを渡していることを自動的にチェックしますFilterRules
(別の関数(@Leonid)に渡す場合は引き続き必要です)RuleDelayed
( )をはるかにうまく処理:>
します(@rcollyer)Flatten
(@Andrew)を使用せずにルールのネストされたリストを処理しますOptionValue /@ list
複数の呼び出しを行う代わりに、を使用して複数のローカル変数を割り当てる方が少し簡単ですsomeoptions /. {opts} /. Options[thisfunction]
(@rcollyerと私の間のコメントで出てきました)
編集:7月25日私は当初、/.
構文を使用することは、実際に呼び出されている関数ではなく、別の関数からデフォルトのオプションを意図的に抽出する場合に意味があると考えていました。これは、ヘッドのリストを含むフォームを使用して処理されることがわかりますOptionsPattern[]
。たとえば、次のようになります(ドキュメントOptionsPattern[{myLineGraph, DateListPlot, myDateTicks, GraphNotesGrid}]
の「詳細情報」セクションを参照してください)。私は最近これを解決しただけです。
visual-studio - Mathematica からCコンパイラを見つける
C コンパイラと mathematica。
こんにちは、Mathematica で CUDA 機能を使用したいと考えています。ただし、動作する C コンパイラが必要です。私はたいてい UNIX 派ですが、Mathematica の Windows コピーを持っています。Visual Studio Express と miniGW (ある種の gcc から Windows ポート) をインストールしてみました。しかし、Mathematica を起動して、CCompilerDriver と CUDALink を Needs でロードした後に CCompiler[] を実行すると、コンパイラの空のリストが表示されます。Mathematica にこれらのコンパイラを検出させるために設定する必要がある、どこかに隠されているものはありますか。私はこのWindows環境で完全に迷っています。
wolframs の Web サイトでこれについて言及されていません。すべての例で、ビジュアル スタジオは常にそこにあり、既に機能しています。
そうそう、私の mathematica はバージョン 8 です。
c - 並列処理では、mathematica を使用して各プロセッサにプログラムのブロックを実行させる方法
C コードのブロックを作成し、それをすべてのプロセッサに送信して実行したい
それはMathematicaを使って可能ですか?
ゲートウェイを使用して C を mathematica などとリンクする
皆さん、ありがとうございました .. :)