タグ付けされた質問 「matlab」

MATLABは、MathWorksによって開発された数値計算と可視化のための高水準言語および対話型プログラミング環境です。[matlab]タグと[octave]タグの両方を使用しないでください。ただし、両者の類似点または相違点について明確に質問する場合を除きます。このタグを使用するときは、使用しているMATLABリリース(例:R2017a)について言及してください。

8
MATLABでn次元行列の各要素を反復処理するにはどうすればよいですか?
私は問題があります。MATLABのn次元行列のすべての要素を反復処理する必要があります。問題は、任意の数の次元に対してこれを行う方法がわからないことです。私は言うことができることを知っています for i = 1:size(m,1) for j = 1:size(m,2) for k = 1:size(m,3) などですが、任意の数の次元に対してそれを行う方法はありますか?


10
MatLabエラー:静的TLSで開くことができません
数日後、MATLABを使用しているときに常に同じエラーが発生しdlopenます。これは、ある時点で。私はMATLABにかなり慣れていないので、どうしたらよいかわかりません。グーグルも私を助けていないようだ。固有ベクトルを作成しようとすると、次のようになります。 Error using eig LAPACK loading error: dlopen: cannot load any more object with static TLS 掛け算をしているときにもこれが得られます: Error using * BLAS loading error: dlopen: cannot load any more object with static TLS もちろん、この問題の解決策を探しましたが、あまり理解しておらず、どうしたらよいかわかりません。これらは私が見つけたスレッドです: MATLABが提供するBLASライブラリを使用するにはどうすればよいですか? http://www.mathworks.de/de/help/matlab/matlab_external/calling-lapack-and-blas-functions-from-mex-files.html 誰かが私を助けてくれますか? このエラーを示す関数呼び出しの例 >> randn(3,3) ans = 2.7694 0.7254 -0.2050 -1.3499 -0.0631 -0.1241 3.0349 0.7147 1.4897 …

11
OctaveよりもMATLABを好む理由/時期
私たちのシューストリング操作では、組み込みハードウェアでのC実装にコミットする前に、いくつかの高級言語でアルゴリズムのプロトタイプを作成する必要があります。 これまでMATLABを使用してこれを行ってきましたが、ライセンスコストが低下し始めています。MATLABコードをOctaveに移植することを検討しています。 いずれかの特定の理由があるではないことを行うには?特にMATLABの使用を主張する外部パートナーがいる場合、互換性が失われますか?期待できるパフォーマンスペナルティはありますか?
82 matlab  octave 

7
MATLABで、スクリプトと関数定義を同じファイルに含めることはできますか?
関数がf()ありmy_file.m、それをスクリプトであるで使用したいとします。 関数をで定義することは可能my_file.mですか? そうでない場合は、で定義されていると仮定しf.mます。どうすればそれを呼び出すことができmy_file.mますか? オンラインドキュメントを読みましたが、これを行うための最良の方法が明確ではありませんでした。
82 file  matlab  function 

5
Matlabベクトル化-セルに対するゼロでない行列行インデックス
私はMatlabと協力しています。 バイナリ正方行列があります。各行には、1の1つ以上のエントリがあります。この行列の各行を調べて、それらの1のインデックスを返し、セルのエントリに格納します。 Matlabではforループが本当に遅いので、この行列のすべての行をループしないでこれを行う方法があるかどうか疑問に思っていました。 たとえば、私の行列 M = 0 1 0 1 0 1 1 1 1 そして、最終的に、私は次のようなものが欲しい A = [2] [1,3] [1,2,3] A細胞もそうです。 より迅速に結果を計算する目的で、forループを使用せずにこの目標を達成する方法はありますか?

1
macOS Mojaveにアップグレードした後、MATLABがMEXファイルをアンロードしない
MATLABでは、clear mexすべてのMEXファイルをメモリからアンロードします(ロックされている場合を除く)。以前のバージョンのmacOSでは、clear mexコマンドを発行するだけで、MATLABを再起動せずにMEXファイルを再コンパイルして変更したバージョンを実行できました。これは、モハベではもはや不可能です。 たとえば、次の簡単なMEXファイル(get_data_pointer.c)を取り上げます。 #include "mex.h" void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { plhs[0] = mxCreateNumericMatrix(1, 1, mxUINT64_CLASS, mxREAL); *(uint64_t*)mxGetData(plhs[0]) = (uint64_t)mxGetData(prhs[0]); } MEXファイルを作成してメモリに読み込むことができます mex get_data_pointer.c get_data_pointer(0) それをクリアするには、 clear mex [~,mexfiles] = inmem version -modules inmem実際、MEXファイルがメモリにロードされていないことを示す空のセル配列を返しますが、version -modules(ドキュメントに記載されていないため、この回答から)/Users/cris/matlab/get_data_pointer.mexmaci64出力には引き続き表示されます。そして、MEXファイルのソースコードを変更して再コンパイルすると、実際にはMEXファイルが再ロードされることはなく、MATLABを終了するまで古いバージョンが引き続き実行されます。 macOS Mojave上のMATLAB R2017aでこれを確認しています。これは、High Sierraで同じバージョンのMATLABで問題になることはありませんでした。 再起動せずにMATLABにMEXファイルを強制的にアンロードさせるにはどうすればよいですか?

5
メモリオーバーフローを引き起こしたメモリに一時的な行列を作成せずに行列を「コピー」する方法は?
はるかに大きい割り当てられたメモリにマトリックスを割り当てることにより、MATLABはそれを 'コピー'しながら何らかの方法で複製し、コピーされるマトリックスが十分に大きい場合、メモリオーバーフローが発生します。これはサンプルコードです: main_mat=zeros(500,500,2000); n=500; slice_matrix=zeros(500,500,n); for k=1:4 parfor i=1:n slice_matrix(:,:,i)=gather(gpuArray(rand(500,500))); end main_mat(:,:,1+(k-1)*n:1+(k-1)*n+n-1)=slice_matrix; %This is where the memory will likely overflow end ただ「スマッシュ」にどのような方法slice_matrixにmain_matオーバーヘッドなし?前もって感謝します。 編集: main_matあらかじめ割り付けておくとオーバーフローが発生します。main_matがmain_mat=zeros(500,500,1);(小さいサイズ)で初期化された場合、オーバーフローは発生しませんが、行列が割り当てられる前に割り当てが行われないため、オーバーフローが遅くなります。これにより、範囲がk増えるにつれてパフォーマンスが大幅に低下します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.