MATLABプログラミング 質問箱 その4
>>1 乙です。即死回避保守。 simulinkって制御に使う他に、 Scratchみたいなビジュアルプログラミング言語として遊べるかな? windowsなんかでparfor使った場合、マルチスレッドと言えばいいのかな?マルチプロセス? タスクマネージャ見ると1人のworkerは1つのプロセスみたいだけど 突然の質問失礼します。 if文を一つだけ抜けさせるbreak構文はどうしたらよいのでしょうか? 例えば、 for i=1:100 ~ ~ for j=1:1000 if ある条件 ~ else ここである条件で抜ける(Aへ) ~ ~ end end @ end A 上記のように@へ抜けさせたいのですが、break構文を使うと、 Aにいってしまい、終了してしまいます。。 breakで@へいって、再度iの続きをさせたいのですが、どのようにやればよいのでしょうか? なお、for jからendまで数千行あるため、ある条件で@へ出させることができれば、 非常に効率が良いです。 Aに行ったんじゃなくてどっかにreturnがあってそこで終了してたとか すみません、質問なんですが3次元の疎行列とスカラーの積を求めようとすると 以下のようなエラーが出てしまいます。 p = 18 x 24 x 4 doubleの疎行列 wx = 0.95 a = wx * p Error using .* ND-sparse arrays are not supported. この計算を行うにはどのように書けば良いでしょうか? >>5 6のいうとおり、breakなら(1)に行くと思う。 (1)の前のあたりまで戻りたいのであればcontinueが使えるかも。 どっかバグってんじゃね その数千行を整理していけば直るのでは 質問です. uigetdir関数を用いてディレクトリへのパスを変数dir_pathに入力する関数Aを作成しました. 再度関数Aを使用する際,uigetdir関数のオプションにある,デフォルトのディレクトリを前回指定したdir_pathに設定する仕様にしたいと考えています. しかし,関数Aの冒頭でdir_pathを読み込んだ場合,初実行の場合”未定義の変数”としてエラーを吐き出してしまいます. 何か良い方法はありませんでしょうか? すまん、割れって? いやオクで買っても仕方ないのかなと。 macにおいてMATLABを使用している者です latexを使用するためにいろいろ設定したところプログラムが実行はできるもののずっと回帰せずにこまっています 参考にしたのが http://osksn2.hep.sci.osaka-u.ac.jp/ ~taku/osx/install_xtexgsgv.html なんですがこのページの(0.下準備)のところでターミナルでecho $shellを実行したら /bin/bash と表示されたので説明に従いコマンドを実行したのが原因かとおもわれます macについてあまり詳しくないのでどうすればいいのか調べているところですがわかる方いましたらご教授おねがいします >>14 mファイル実行なら自動的にdir_pathはワークスペース変数に保存されて 14が考えているようにできるんだが, 関数実行だとワークスペースに保存されないから matlabのワークスペースに保存すれようにすればいい。保存場所は関数Aと同じ場所。 matファイルの保存方法はhelpを見てちょ。 >>14 言い忘れた。 1:関数Aの最初で,dir_pathをloadね。 2:uigetdir使ったらdir_pathを更新。 3:save >>4 皆が言ってるようにbreakで@に出るはず。 あと、毎回言って得るんだが、matlabでforの2重ループはやらんほうがいい。 行列使うかreshapeで一次元化してやれ。 インタラクティブチュートリアルに登録するために必要事項を入力し、登録ボタンを押したのですが、 We're Sorry - an error has occurred We apologize for the inconvenience. This error has been automatically reported to MathWorks. We will fix this as soon as possible. というエラーがかえってきてしまいます。 なぜでしょうか。 Chrome, Firefox, Safariそれぞれ試してみましたが、どれもダメでした。 OS X 10.7.3です。 え、おれ行列要素の操作に二重for使ってしまうんだけど、どうするのが正しいんだろう >>25 やりたい処理による どんな処理してるの? あるディレクトリないのものでループさせるとき、 Bシェルでfor day in `ls dir`みたいに書くのをMATLABだとどういう風になるのか教えて下さい。 ちなみにあるディレクトリは日付のディレクトリです。 >>26 やってるのは画像処理だけど、たとえばxyの添字が共に奇数、共に偶数、それ以外、に分解するとか。 他には、各要素の上下の差と左右の差を求めて、差異が小さい方の平均値で置き換えるとか。 あともっと単純なのだと、各要素がある値より大きければその値で置き換えるってのもあったな。 適した機能があるか調べるよりループで書いちゃった方が早かったんで。 >>27 日付のアドレスのファイル名を取得したいということ? files = dir('日付のアドレス'); filenames = {files.name}; for i = 1: length(filenames) if strcmp(filenames{i},'.') || strcmp(filenames{i},'..') filenames(i) = []; end end filenames{:} %<-ファイル名表示 今, matlabないから動作確認はしとらん。 質問抽象的すぎ。 >>28 差とるんだったらdiffとかbsxfun使えよ。 >>28 俺も画像処理だから多分こんな感じ ひとつめ I(1:2:end,1:2:end)=処理; ふたつめ conv2とfindつかったら? みっつめ I(I>0.5)=1; 画像処理でfor文は基本NG てかmatlabはそういう使い方するもんじゃない 固定のフィルタではconv2を使っていたけど、条件によって処理が別れる場合 どうすればいいかわかんなかった。findでできるんであれば調べてみるよ。 3番目はそのまんまの機能があったんだな。 25です。29さん、ありがとうございます。 抽象的ですいませんでした。 具体的な質問は、DATEというディレクトリ内には120923、120924、 120925などというディレクトリがあります。 Bシェルだとfor day in 120923 120924 120925や、 for day in `ls $DATE`などとループを回していたのですが、MATLABでは どのようなループになるか教えて下さい。 お願いします。 >>33 FOLDERZ = dir('DATE'); FOLNAMES = {FOLDERZ.name}; filenames = FOLNAMES(3:end);%必ず相対パス'.'と'..'が最初に来ると仮定すると コマンドウィンドウ >>filenames(:)%<-表示 ans = '120923' '120924' . . . >>filenames{:}%<-表示 ans = 120923 ans= 120924 . . . てな感じ >>29 の訂正 FOLDERZ = dir('DATE'); FOLNAMES = {FOLDERZ.name}; FOLNUM = length(FOLNAMES); FOLNAMENEW =[]; for i = 1:FOLNUM if ~strcmp(FOLNAMES{i},'.') && ~strcmp(FOLNAMES{i},'..') FOLNAMENEW = [ FOLNAMENEW ,{FOLNAMES{i}}];%あまり書き方よくない end end 34さん ありがとうございます。 なかなかうまくいきませんが、 もう少しあがいてみます。 TV法ていろんなやり方あるけど導出をやってる論文で日本語のものありますか? 典型的なものから応用してるのまでどれでもいいです 現在 windows7 64bit で Matlab 2007b を使用しています。 mex -setup コマンドを試したところ、Noneしか出ずにコンパイラを選択することができません。 C++コンパイラを使用したいのですが、この場合何をインストールすればよいのでしょうか。 現在visual C++ 2008 express edition と 2010 express edition はインストール済みです。 どなたかOS:windows7 64bitを使用していてgetframeで問題が出てる人いませんか? for文を回す中でgetframeで逐次ウィンドウをキャプチャしていくコードを組んでいるのですが なぜか最初の1フレーム目のみを延々とループ回数分だけキャプチャしてしまいます windowsXP32bitではこんなエラー出なかったのですが・・・ どなたか心当たりのある方いらっしゃいましたらご教授いただければと思います よろしくお願いします windows7で2012aを使っております。 mathworks製のツールボックスで使われているクラスにメソッドを追加したいのですが、 自分以外のユーザーに影響を与えないようにする方法はありますでしょうか? 具体的には、symbolicツールボックスのsymクラスにないmin()などを追加したい場合などです。 \toolbox\symbolic\symbolic\@sym フォルダに書かず、 C:\Users\ユーザー名 以下に書いたりできるのでしょうか? symをオレオレクラスに継承するしかないでしょうか? 40です 解決はできていませんが原因は分かったので、一助になればと思いこちらに報告します どうもgetframeで取得したい軸または図に set(gca,'Facealpha',0.5) などと透過率を設定してやると>>40 の症状が発生するようです どうぞご注意を >> 40 Renderer変えると治るかも OpenGLでダメだったことがあって、zbuffurとかに変えたら治った気がする set(gcf,'Renderer','zbuffer') みたいな感じだったと思う >> 43 そもそもaxesプロパティでFacealpha設定できねーし。 patch かsurf の軸ハンドルを設定したんだろ。 try catchで囲ってエラー出なかっただけじゃね。 y=1/det(diag[exp(x),exp(2x),exp(3x)]^2) (diagは対角行列,detは行列式) (xは変数で1から10など好きに変化させる。) このような物を計算し、x,y平面でグラフを書きたいのだが、 (本当はもう少し複雑な式ですが、簡易化してる。) x=1:1:10 A=[exp(x) 0 0; 0 exp(2*x) 0; 0 0 exp(3*x)] z=det(A) としてもエラーが出てしまうんだよ 配列型のソフトだから上手くいかないのはあとでわかったのだけど、 上手く行列内に関数を入れることはできるのでしょうか? できるのであればその定義の仕方を教えろください。 2次元正規分布の描画を平均ベクトル(2*1)と分散共分散行列(2*2)の値を代入した変数から行う 関数を作成したい ---------------------------------- function 2dim_Seiki(x,m,Cov) [x,y] = meshgrid(linspace(-1,3,25)',linspace(-3,1,25)'); X = [x(:) ; y(:)]; Out = mvncdf(X,m,Cov); surf(x,y,reshape(Out,25,25)); return; ------------------------------- ここまでmファイルを作成しましたがエラーになってしまいます やり方を教えてください。おねがいします! >>47 変数名の先頭に数字を入れている時点で論外 もっと勉強しな。かす。 >>49 変数先頭を修正しました。ありがとうございます そして、どうかカスな私にやり方をおしえてください あれから下のような関数を考え、実行しましたがエラーになってしまいます Pdf = 1/(sqrt(2*pi)).^-2.*sqrt(det(Cov)).^-1.*exp(-5.*(X-m).'.*inv(Cov).*(X-m)); >>50 エラーならエラーを書け。 長い式は一時変数を使ってどんどん分解していけば人に聞く前に アホでも気付く。 ここは宿題丸投げスレじゃない。 それに式自体あっちこっち間違ってる。 正定ならcholつかう。 ベクトル化する前に、スカラ出力が正しいかするのが先。 >>51 ありがとうございます。一度、一時変数を使用します エラーは"行列の次元は同じである必要があります"と表示されます 何度か修正しましたが、改善されず上と同じエラーは出ます 現在下のような形になってます Pdf = 1/(sqrt(2*pi))^(-2/2)*sqrt(det(Cov))^(-1/2).*exp(-(X(:)-mu)'*inv(Cov)*(X(:) - mu)/2); 間違っている個所についてヒントで十分ですので、どうかご教授をおねがいします >>52 それだけ見ても分からん。変数の次元が違うなら次元が違うわけで各size()は? Xは(:)しちゃあかんでしょ。 データの数xデータの次元 なんじゃ? >>53-54 ありがとうございます 早速調べたいと思います MatlabのGuiはOctaveでも使えますか?おしえてください >>60 どうしても使えるようにしたいのですが、MATLAB以外のソフトで方法はないのでしょうか? MATLAB互換の関数がOctaveにあれば可能 なければ自作しろ 質問です guideで作成したツールのウィンドウを閉じたときに処理を追加したいのですが どうすればいいのでしょうか? 質問です Matlabで画像とか絵の傾きを検出する方法ってありますか? 何を基準に傾きを出すのかしらんけど、MATLABじゃなくて画像処理全般の話題だろ 幾何モーメントとか勾配ヒストグラムとか方法は色々ある MATLABを用いて時系列データに対して、 周波数領域でバンドパスフィルタをかけたいのですが ネットで探しても時間領域でのフィルタについてしか でてきません。どなたか教えていただけますか? >>73 周波数カットするのに時系列のフィルターは使えないってことみたいだけど、 時系列のフィルターかければ周波数カットされる FFT解析で周波数分かるから、フィルターかける前と後で比べてみれば良いと思う FFTはググって 質問の意味が違ってたらすまん >>73 MATLAB helpや参考書など大量に情報はあるぞ。デジタルフィルターを学ぶと確実に書いて有ること。 単に周波数領域というかデジタルフィルターを理解してないのでは? コマンドだと、fft、ifft の使い方がわかれば理解できる >>74 ×時系列のフィルター ○時間領域でのフィルター だった。 代行書き込みなので、書き込みが遅くなったらすまん フーリエ変換に関する質問なんだけど Simulink上で0~n*Ts(n:サンプリング数,Ts:サンプル時間)の間実行して 得られたデータをfftかけるわけだけどもこの時時間軸のデータ個数は(n+1)個あるので一番初めの0秒のときのデータを削ってるんだけど合ってるのか不安 シミュレーション時間を長めにとったほうがいいんだろうか? 用途次第なのでなんとも 定常のときはデータ数多いほうが安定になる >>78 おいおい >>77 fftの周波数分解能はシミュレーション時間で決まる 別にt=0を削っても問題はないけど、もうちょっと調べてから使うべきじゃないか 最近workspaceの画面サイズを変更すると2分くらい固まるようになりました。 設定をいじったことが原因な気がするのですけど、何か原因に心当たりないでしょうか? >>80 > fftの周波数分解能はシミュレーション時間で決まる > 別にt=0を削っても問題はないけど、もうちょっと調べてから使うべきじゃないか ばかかおまえ シミュレーション時間っていう言葉がそもそも間違ってるじゃんw >>83 メモリは8G積んであるのだけど、スワップが起こってるんでしょうかね? ひとまず再インストールしたら快適になったので、様子見してみます。 また同じ症状が起こったら原因特定して報告したいところ。 各変数a~fにそれぞれ数字1~6を割り当てたくて下のように二行に分けてるけど もっとスマートに一行で書く方法ないですか? 変数の名前に意味もたせてるから変数を配列にするのはナシで。 temp = num2cell(1:6); [a,b,c,d,e,f] = deal(temp{:}); matlabで微分したいのですが syms x y z A=x^2+y^2+z^2 B=diff(A,x) %Aの式をxで微分 実行 → ans=2x だと通常通りできるのですが↑式を A=(x(1))^2+(x(2))^2+(x(3))^2 としてx(1)で微分して 実行 → ans=2x(1) と言う風に引数でしたいのですが symsで宣言できなかったりします。 どうすればよいでしょうか?教えてください。 Symbolic Math Toolboxがインストールされてないに一票 matlabで画像処理をしています 画像の各画素の青の値に常用対数をとり、その平均値を出したいのですが その値が-infになってしまいます どうしたらよいでしょうか?よろしくお願いします A = imread('image.bmp'); blue = A(:,:,3); blueD = double(blue); bLog = log10(blue); baverage = mean2(bLog); >>92 そういった経験がなく画像の常用対数の平均値を出すことの意義が分からないのではっきりした解決策は出せませんが 常用対数を出した時点 bLog=log10(blueD); で青の信号が0の要素は-infになってしまいます。 -infが混じった平均をとると結果も-infになります。 なので常用対数をとる前にblueDの0の要素だけ例外処理するなりしないといけません。 ただ、例外処理の先をどう扱うか(例えば-1扱いにするか平均から除外するか)で結果も変わると思います。 相対値だけが問題なのであればblueDの全要素に+1するという手もありますが。 前者の場合はif文使うぐらいしか思い浮かびません。 もっと上手い手もあるかもしれませんがこれぐらいでご勘弁を >>92 対数で-Infがでるときは min(blue) max(blue) まずこれを確認する 回避策としては0をNaNで置き換えて(findを使う) 対数をとって NaNで置き換えた要素に何かを入れる(何を入れるかはその後の処理に依存) MATLAB Corder使っている方いませんかMATLAB言語からC/C++コードを直接生成したいのですが、お値段が高く・・買えないです。 一部のブログラムだけ変換していただけないでしょうか。 こちらのほうに連絡していただければプログラムを送信しますのでよろしくお願いします。 uerihufour@yahoo.co.jp skypeID:yusuke-0727 図々しい質問をしているのはわかっていますが本当に困っているのでよろしくお願いします m(__)m simulinkモデルからreal-time workshopでコード生成してみたけど、出来たコード重くてあかん。最適化のチェックはいれてるんじゃが。なんかコツがあるのかな。 コツご存知の方、ご教授ください。 微分方程式を解いたあとに特定の時間の値を求めるのはどうすればよいのですか? >>81 ですが、近頃また調子が悪くなってきていました。 先ほど、警告: com.mathworks.mde.explorer.Explorer を作成できません。 というエラーが出たためググったところ http://www.mathworks.co.jp/support/solutions/ja/data/1-H9I9LH/index.html?product=ML& ;solution=1-H9I9LH このページがヒット。載っている通りにリネームしたら一気に軽くなったので、 >>81 も何かファイルが破損していたのが原因だった可能性が高そうです。 >>95 本家のHPでチラッと見たけど、最近のscipyってcのコードを生成するんじゃねーの? MATLAB2012にアップデートしたのですが 画像を一枚表示するだけで膨大な数列が表示されてしまい困っています。 前のバージョンではこんなことなかったのですが 設定などを見ても省略できそうなところはありませんでした どなたか分かる方いたらお願いします なんのコマンドを使ったのか書いてくれないとコメントしようがない scatterで散布図を作成しているのですがサイズの指定の仕方が分かりません 値の最大値より少し大きいサイズの散布図を自動で作成して見やすくしてくれるのは助かるのですが 後で複数の散布図を比較したいので同じサイズを指定して作成したいです 今は scatter(linewidth, lineheight,30,'.') でマーカーの種類と大きさだけ指定しています x = randn(100,1); y = randn(100,1); scatter(x,y); set(gca, 'xlim', [-4 4]); set(gca, 'ylim', [-4 4]); とかでどう? 画像処理で5枚の画像を呼び出して同じ処理をするってのをやってるんだけど、 imread('C:/position/*.jpg'); の*をi = 1:5とかにしたいんだけどどうしたら良いか分かりますか? >>105 num2strは使えると思うのであとはevalと組み合わせる >>105 for n=1:5 filename = sprintf('C:/position/%d.jpg', n); imread(filename); end が柔軟で良いと思う。 matlabでtxtファイルを読み込みたいのですがどうすればいいでしょうか? いろいろ調べてやってみたのですが、エラーがでます。 ファイルは1列目に年、二列目に1月、三列目に2月、…、十三列目に12月 のデータが入っています。ちなみにデータの間にコンマや;は入っていないです。 よろしくお願いします。 どんなエラーが出たとか、データ形式とか書かないと何もわからん。 まずはデータ形式を。 たとえば1列目と2列目はどうやって区別しとるん? スペース? 列は固定長? 111さん、ご指摘ありがとうございます。 1列目と2列目の間には三つスペースが開いています。 Error: Unexpected MATLAB expression. というエラーがでます。ちなみに、データは 2012 6.0 7.2 6.3 10.7 11.3 13.3 12.8 14.0 12.2 10.8 9.3 7.7 というかんじです。 よろしくお願いします。 現在、研究室でSun Blade 150(OS:Solaris SunOS 5.10)のパソコンを使用しており、Matlabをインストールしようと思っています。 サポートされているMatlab R2008a Solaris 版をダウンロードして、インストールしようと試みたのですが、 以下のような拡張子のファイルだらけで、どのようにインストールしたらいいのか分かりません。 どうかご教授お願いします。 ***.ftp ***.common ***.sol64 ***.slctrl ***.net 一つのmファイルに複数の関数を書くことってできますか? 小さな関数をmファイルに小分けして書くと見づらいので、方法があれば教えてください。 それとスクリプトファイルの関数を書くことってできますでしょうか? ミスりました.。>>115 は無視して下さい。 Figureの凡例にて、τと^を表示しようとして、 legend('\tau_{dis}', '\hat{\tau}_{dis}'); とコマンドしたところτが表示できず、バックスラッシュが表示されました。 コマンドウィンドウ上では「lataex文字列を解釈できません」と表示されました。 setでインタプリタをlatexに設定しましたが、解決しませんでした。 解決方法のご教授お願いします。 環境はWin7x64とMatlab2012bです。 インクリメント演算子とかデフォルト引数とかいい加減実装して欲しいな octaveがすでにやってるから気に喰わないのかもしれないけど >>117 epsで吐き出すなら、吐き出した先のソフトで色がついてる背景を消去したら いいだけじゃない [eigv eign]=eig(Hamiltonian); などのように行列を対角化したときに maxやminのように最大か最小を見つけるのではなく n番目に小さいeignの要素と、その場所を得る関数はありますか? >>119 texなんですが、どうやってやれば良いのでしょうか? バンドパスフィルタにはゼロ位相のものと因果律を 満たすものとがあると思うのですが、ネットで落ちていたんですが 以下のはどちらにあたるか教えて下さい。 よろしくお願いします。 function [bandy]=bandp_fft(y,fs,F1,F2) dt=1/fs; [k,l]=size(y); if k==1 n=l; else n=k; end; ffty=fft(y); %------------------------------------ Low-pass(f=<F1) index1=round(F1* (dt*n)+0.5); index2=n-(index1-2); Lowpass=ones(size(ffty)); Lowpass(index1+1:index2-1)=zeros(size(Lowpass(index1+1:index2-1))); lowy=real(ifft(Lowpass.*ffty)); %figure1=figure(1);plot(lowy); %------------------------------------ High-pass(f>F2) index1=round(F2*(dt*n)+0.5); index2=n-(index1-2); Highpass=zeros(size(ffty)); Highpass(index1+1:index2-1)=ones(size(Highpass(index1+1:index2-1))); highy=real(ifft(Highpass.*ffty)); %figure2=figure(2);plot(highy); %------------------------------------ Band-pass (F2<f=<F1) bandy=real(ifft(Lowpass.*Highpass.*ffty)); MATLABでAM信号を書きたいのですがエラーが出てしまいます。ソースコードは fc = 5e4; ac = 1; wc = 2 * pi * fc; fm = 5e3; am = 1; wm = 2 * pi * fm; tt = 2e-3; n = 10000; ts = tt/n; t = 0 : ts : tt; s = ac * (1 + am * sin(wm * t)) * sin(wc * t); plot(t(1:n/2), s(1:n/2)); 時間波形0〜2msを10000サンプリングのうちの時間波形0〜1msを表示したいです。 情報信号sin(ωc*t),ωc=2*π*5000 搬送波sin(ωm*t),ωm =2*π*50000 内部行列の次元は一致しなければなりません。とエラーが出ます。どなたか知恵を貸してください。 rcosineとhanningって一緒なの? 説明見ると、よくわからんが 式が一緒っぽいみたいなのと plotした波形が一緒なんだが これを説明できる文章が思いつかン ネットで検索したり、図書館で本読みまくったが、初歩的なことなのか、ぜんぜんのっとらん。ハニングはわかるんだが あるシミュレーションで100万点ほどサンプルして 計算処理したいのですが、要素が多すぎますってエラーで 計算できません 初歩的なことですみませんが 回避方法教えてください 一挙に読み込むのでなく 読み込みと処理とを適当に分割しました とかいうんじゃねーだろな x-5cosx+3sinx-40=0 をニュートン法で求めたいのですが、matlabの数値計算の本を読んでもさっぱりで、どの様に考えたらよろしいでしょうか? よろしくお願いします。 http://www.wolframalpha.com/input/?i=Plot [x+-+5+Cos[x]+%2B+3+Sin[x]+-+40%2C+{x%2C+30%2C+50}] グラフ見て概略把握して http://www.wolframalpha.com/input/?i=FindRoot [x+-+5+Cos[x]+%2B+3+Sin[x]+-+40+%3D%3D+0%2C+{x%2C+34}] http://www.wolframalpha.com/input/?i=FindRoot [x+-+5+Cos[x]+%2B+3+Sin[x]+-+40+%3D%3D+0%2C+{x%2C+38}] http://www.wolframalpha.com/input/?i=FindRoot [x+-+5+Cos[x]+%2B+3+Sin[x]+-+40+%3D%3D+0%2C+{x%2C+42}] 34.1895 38.9164 42.2712 Mathematica >>131 for1回ごとに100万この要素を持つ行列をそれぞれ計算させてそれを複数回まわしました 要素が多すぎと出ますが一応計算はできるみたいなので 質問させていただきます。 現在、ある画像ファイルに対し、for文を用い少しずつ違う処理を加えた後、 各データをbmpとしてimwriteで保存しようとしているのですが、 ファイル名の末尾に filename_1.bmp filename_2.bmp filename_3.bmp ... などと、名前を適宜変えて保存するにはどうすればよいのでしょうか。 for p = 1 : 100 imwrite(data, 'filename_%d.bmp',p ,'bmp' ); end のような感じで実行できると思っていましたが、どうやら駄目なようなので・・・。 よろしくお願いします。 imwrite(data, ['filename_' num2str(p) '.bmp'] ) imwrite(data, sprintf('filename_%d.bmp', p), 'bmp'); でもいける。 質問です ubuntuでlmstartからサーバ上のmatlabを起動していますが matファイルやmファイルをダブルクリックで開こうと思ってもmatlab上でロードできません matファイル等のプロパティからmatlabと関連付けしようとしましたが、一覧にmatlabが表示されず選択出来ませんでした matファイル等とmatlabを関連付ける方法はありますか? 質問です。よろしくお願いします。 オイラーの運動方程式をルンゲクッタ法で解きたいのですが、どのようにプログラムを組んだら良いのかが分からないという状態です。 よろしければ教えて頂けたら嬉しいです。 質問です。imagescでデータをカラープロット するときにy軸を対数スケールにしてなおかつy軸は 下から上に増加させたいと思います。自分でやるときに axis('xy')を付加すると画像が消えます。どなたか 対処法を教えて下さい。よろしくお願いします。 パノラマ画像を作りたいのですが、どうしたらいいのでしょうか?? stitchingという作業について詳しく知りたいです。 質問です。 文字列1つと数字データを2つ含む構造体を エクセルに出力したいのですが、どうすれば良いでしょうか。 例; data=struct('str','','prob',0,'sum',0); このdataという構造体に例えば100個のデータが入っているとします。 data(1).str=string, data(1).prob=0.9,data(1).sum=5 data(2).str=string2, ... ... data(100).str=string100,data(100).prob=0.1,data(100).sum=4 のような形です。 このdataという構造体をエクセルに出力するにはどうすれば良いでしょうか。 よろしくお願いします。 質問です。 畳み込み和を計算するユーザ定義関数を function y = con(x) y=[]; N=length(x); for m=0:N-1; tmp=0; for m=0:N-1; tmp=tmp+x(m)*h(n-m); end end 上記の様に書いてみたのですが、これであっているのでしょうか? なにか別の書き方ありましたら教えて欲しいです。 もしよろしければどなたかお答えください。 matlabである時系列のパワースペクトルを白色化(whitening)して それをまた時間領域に戻したいのですが、ネットをさがしてもでてきません。 どなたかやり方を教えて下さい。 よろしくお願い致します。 imagescで表示した画像中で、マウスを動かした軌跡の座標を取得して保存したいのですが、何か方法はありませんか? function myBDCallback(src,eventdata) set(src,'WindowButtonMotionFcn',@myBMCallback); end function myBMCallback(src,eventdata) C = get(gca,'CurrentPoint'); C = round(C); title(gca, ['(X,Y) = (',num2str(C(1,1)),',',num2str(C(1,2)),')']); end function myBUCallback(src,eventdata) set(src,'WindowButtonMotionFcn',''); end という風に関数を作ってみたのですが、座標をマトリクスに入れて吐き出すことが出来ません。 よろしくお願いします。 Matlab32bitをWindows8 64bitにインストールできるのでしょうか? 俺は7だから知らないけどとりあえずインストールしてみたら? 複数画像を1つのfigure内に表示する事はできますか? 例えば、I=imread('***.bmp');と読み込んで それをJ=rgb2gray(I);と処理しなおした後に 左右に並べて比較したいのですが >>152 どうもありがとうございます subplot(2,1,1),imshow(I); subplot(2,1,2),imshow(J); これで並べる事はできましたが画像そのものが表示されるわけではなく ヒストグラムのような座標軸が出てきました 画像とそのグレースケール化画像を並べるにはどう修正すればよいのでしょう? カルマンフィルターが導入されたのはいつのバージョンからだっけ? >>151 imshowpair(A,B,'montage') MATLABで、スクリプトでディレクトリ内のファイル名を変更していきたいんですけど、 ファイル名を変更する関数とかコマンドってありますか?。 教えてくださいm(__)m。 simulinkでシミュレーションの固定ステップ0.01秒にしてるのに simulink上のプログラムembeddedファイルでなぜか0.005秒ごとに ループが回るんだけど、なんでろ? >>156 環境によって変わってくるけど、自分はsystemを使ってた。Unixだと system(sprintf('mv %s %s', filename1, filename2)); みたいに。 matlab上でのswitch case文とif else文は 分岐の数が同じ場合どちらが速度が速いですか? 画像解析で色を検出して、例えば青系等で薄い青は低く、濃くなってくと高くなるっていうグラフを作りたいんですが、どうやって作っていけばいいんですかね ガウス分布で表して、ポテンシャル場にする感じです 日本語下手で申し訳ない >>163 色の濃淡はrgb色空間向いてないからluvとかにもっていってあとは指定色をしきい値処理して分布みたらいい気がする ただやりたいことがあまり良くわかんないから参考にならないのかもしれない S-Functionについての質問です. InputRealPtrsType u0 = ssGetInputPortRealSignalPtrs(S,0); real_T *y0 = ssGetOutputPortRealSignal(S,0); 配列u0を配列y0にコピーする関数を別のcファイルに定義しようとしています. プロトタイプ宣言と関数の引数はどのように渡せばいいのでしょうか? プロトタイプ宣言を extern void ORIGINALFCN(real_T u0,real_T y0[]); 関数呼び出しを ORIGINALFCN(*u0[0],y0); としているのですが”error C2109: subscript requires array or pointer type” となり困ってます 御助力いただけないでしょうか ある座標(x1,y1)を通る直線を座標を中心に回転行列を用いて回転させたいんですが、 どうすればいいのか教えてください (x1,y1)が中心となるように座標系(直線の式)を平行移動する 任意の角度で座標系を回転させる 離散データを特殊関数でフィッティングする やり方を教えて下さい。 よろしくお願いします。 mesh関数のview(2)で 連続的に変化する複数のグラフを作ったのですが これをgif化するにはどうしたらできますか? 170さん、ありがとうございます。 lsqcurvefitはネットで使い方が 書いてあるのですが、使い方がよくわかりません。 ちなみに、xdataとydataは同じ大きさのベクトル なのですが、初期値x0の意味がよくわかりません。 ちなみに、ベッセル関数で離散データをフィッティング したいです。 >>168 >>167 です。遅れましたが、ありがとうございました 離散データの極値を求めたいのですが ネットで調べるとSymbolic Math Toolbox が必要とでてきました。 Symbolic Math Toolboxがなくても微分 できますか? 複雑じゃなきゃ関数の微分くらい手計算でやれ 面倒なら数値微分で近似 今時微分積分もスマホのCASでも出来るよ ネットでPCならSage math cloudがお勧め >>175 オイラー法でいけんじゃね?しらないけどww 単純に数式計算がしたいならフリーのmaximaでも使えば? 学生版では配列のサイズに制限があるようですが オプション関連でこの配列制限が影響するオプションはありますか? SimscapenやSimElectronics,SimPowerSystemsに影響があるか知りたいです ある行列testからゼロ以上の最小値を得たい場合、 findをどのように使えば良いでしょうか。 [r, c] = find(test == min(test(:)) && test >= 0); という書き方はできないようで… >>182 大変参考になりました ありがとうございます ポップアップメニューの中身を可変にしたいんですけど可能ですか? ファイルを読み込み、それによってポップアップメニューの中身の項目数が 3個だったり、10個だったりと変化するのですが、うまくいきません。 あとfigure1からfigure2を呼び出すことはできますか? figure1がメインの画面、figure2がプロパティの画面になります。 引数付きで呼び出したいのですが、やり方がわかりません。 わかる人、よろしくお願いします。 ゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミゴミwwwwwwwwww 関数定義の方法について非常に困っています。どうかお助けください。 入力変数にx,y(サイズN)を取るN元連立非線形方程式F_i(x,y)=0 (i=1,2,...N)があり、 ワークスペースに測定によって得られた既知の変数xの値x_measuredがあります この時F_i(x_measured,y)=0は(yについて)fsolveで解くことができるかと思うのですが、 F_i(x_measured,y)=0の上手い定義の仕方が分かりません 最も愚直にはワークスペース上のx_measuredの値を見ながら、 function F = fun(y) F = [f_1(x_measured,y); f_2(x_measured,y); ... ; f_N(x_measured,y)] end と関数定義してスクリプトで"fsolve(@myfun, y0, ... )"とすれば一応解けますが、 これではx_measuredが変わる度にfunctionの定義しなおさなくてはなりません (実際問題Nは非常に大きく、また入力はx,yだけではないのでほぼ不可能です) できれば関数の定義は次のように function F = fun(x,y) F = [f_1(x,y); f_2(x,y); ... ; f_N(x,y)] end としておいて、fsolveに受け渡す際に"fsolve(@myfun(x_measured,y), y0, ... )" のような書き方ができれば非常に嬉しいのですが、可能でしょうか? もし可能であれば、関連するドキュメントや簡単な例など紹介していただければ幸いです。 関連するドキュメントと簡単な例 ttp://www.mathworks.co.jp/jp/help/optim/ug/fsolve.html 調べたところ、無名関数を使えば良いっぽいです 何とか解決できそうなので、もう少し頑張ってみます ttp://www.mathworks.com/matlabcentral/answers/28728-fsolve-function-with-values-read-from-the-workspace FFTしたwavファイルの周波数をグラフにプロットしているのですが縦軸が五線譜に見えるように 「縦軸を(12√2)*n毎に目盛りを配置」尚且つ「目盛り同士が等間隔」 になるよう表示するやり方はありますか? またmatlabではなくscilabでプログラムしているので差異があればそこも教えてほしいです 答えていただける方がいましたらもう少し詳細をお伝えしますのでお願いします matlabのプロットならわかるがscilabは知らん >>190 分かりました ではmatlabのままで構いませんので教えていただけないでしょうか? 目盛り幅は基本的に等間隔 目盛りを手動で指定するにはytickをいじる ttp://sach1o.blog80.fc2.com/blog-entry-58.html 仕事でやむを得ずMATLABを使用しているが、 言語仕様が酷すぎてストレスが溜まる 数値計算にはかなり広く使いやすい仕様だとおもうけどな たしかに仕様は変だけどセル配列ってそんなに多用するかな それよりも文字列をシングルクォートで囲むことが変態的 行列転置と被るからダブルクォートにしてくれりゃいいのに。どうせ使ってないんだし コンパイラでスタンドアロンアプリを作ろうとすると セル配列を使う場面は結構あるのよ MATLAB Coderを使ってC言語にする時、複数のfunctionAがfunctionBを呼び出す場合はどうやればいいですか? 教えてください。 例えば、fprintf(1,'Hello¥n');を実行するfunction hello()をmainから呼び出すとしたら codegen mainとすると 「このテキストは、空でない最上位の式を含んでいます。それはスクリプトのようです。」とエラーが出てしまいます。 質問です。 例えば、 A=cat(3, [1 2 0 ; 0 5 6 ; 0 8 9], [1 1 1 ; 1 1 1 ; 1 1 1], [2 2 2 ; 2 2 2 ; 2 2 2]) という行列Aがあるとして、 index=find(A(:,:,1)==0) このindexを利用して、A(:,:,1)の0の位置と同じ、A(:,:,2)およびA(:,:,3)の要素をxに置き換えて、 A= 1 2 x x 5 6 x 8 9 1 1 x x 1 1 x 1 1 2 2 x x 2 2 x 2 2 という形にしたいのですが、うまい方法が思いつきません。 ご助言お願いします。 初心者ですが、MATLABをつかってリアプノフ指数を求めることはできるでしょうか? >>200 亀レスだけど [row,col] = find(A(:,:,1)==0); A(row,col,:) = x; x軸の上下で異なる目盛り(例えば、下:秒、上:分、など)を付ける方法はあるのでしょうか? もしご存知の方がいらっしゃいましたら、お教え頂けますと大変助かります。 初心者の質問で恐縮ですが、どうぞよろしくお願いします。 matlabって固有値が重解もつときの固有ベクトル正しく求められるの? Ver5.3くらいの時は求められないことが普通にあったけど MATLABでSNRを求めないといけないんですが全然進みません。 一応ここ www.mathworks.com/matlabcentral/fileexchange/35479-stochastic-resonance-in-the-duffing-oscillator-with-matlab/content/runduffsr.m のプログラムを基にしたいんですが・・・ scilabからの関数のプログラムの移植で困ってます。 元のscilabプログラムは関数の引数に伝達関数を入力している部分がありますが、 matlabではうまくいきません。 必要なのは伝達関数の分母分子のsの係数だけなので、 それを抽出した配列を引数にしようとしてもダメでした。 どうすればよいでしょうか。 よろしくお願いします。 >>206 Matlabでも同じことができるはずだけど、 コードをさらしてくれないと何も言えね。 forの中にこのような表記で計算結果を連続させアニメーションを表示させています。 この表示中に右ドラッグで自由に回転させたいのですが、回転しようとすると直ぐに元の位置に戻ってしまいます。 アニメーションを表示させながら回転させられる方法はないでしょうか? drawlater(); delete(); surf(X,Y,Z); xset('colormap',jetcolormap(32)) drawnow(); sleep(1); >>207 function RetVal = calcParam(Gp, cont_model, ref_model) となっていて、Gpがtf型です。 2つ目、3つ目の引数は整数。 関数を呼び出す際にGpにtf型の値を入れると、 『関数 'calcParam' (タイプ'tf' の入力引数) が未定義です。』 となります。 tf型の引数を与えられるんでしょうか。 それとも別の方法になるのでしょうか。 MATLABで磁界のシミュレーションをしていきたいと考えています。 しかしネットで調べても 「マトラボで磁界のシミュレーションができるよ」 とは書いてあるものの具体的な方法を記載しているサイトが見つかりません サイトに限らず書籍などでもいいので、参考になるものを知っている方がいらしたら教えてください。 よろしくお願いします。 functionを使わないことで、引数の件は本質的ではないですが解決(?)しました。 ところで、scilabではrootsで3次方程式を解いていて、 解がすべて小数で求められているのですが、 matlabでsolveコマンドでは解がatanやらcosやらが混ざった式の解として求められ、 この求められた式を計算してもscilabの解と一致しません。 3次方程式はテキストファイル上にscilab、matlabの2つを上下に並べて比較し、 同じであることを確認してあります。 matlabの方程式の変数はsymsで定義してあります。 何か考えられる原因はあるでしょうか。 あと解をすべて小数表示で求める方法はあるでしょうか。 Octave環境において、他ファイルに記述した関数を利用するために source ./functions.m とsourceコマンドを用いていたのですが、 MATLAB環境に移行するにはどのように記述すればいいのでしょうか? よろしくお願いします。 scilab+SIVPで画像処理をしてるけど処理が激遅で困ってます ┌──┐ │ ○ │→┌───┐ └──┘ └───┘ ↑みたいな480×640の画像で、真ん中の円の部分を長方形の画像に展開したいんですが、 1ドットずつ長方形の枠に色情報を移すようなループ処理でやってるせいか超遅い・・・ 円の半径は480/2の240として、円の最外周から30ドットくらいまでを長方形の画像に 展開するのに高速で終わるようにするにはどうしたら良いでしょうか。 今は下みたいな処理をしています。 MARUは480*640*3の配列で、SIKAKUは30*1500*3の配列 MARUで指定する座標の色情報を一つずつSIKAKUの配列に入れて行く r=240 //半径r while(r>210) //半径の最大から最小値まで繰り返す(行置換) a=360 //360°ぐるりと回りながらドット取得 j=1 //長方形展開後の色情報を格納する列番号 while(a>0) //角度を360から0まで繰り返す(列置換) x=round(px+r*cosd(a)) //○画像の抽出したいドットの横方向座標取得 y=round(py+r*sind(a)) //○画像の抽出したいドットの縦方向座標取得 SIKAKU(i,j,1)=MARU(y,x,1) //R・G・Bそれぞれ円の座標の色情報を SIKAKU(i,j,2)=MARU(y,x,2) //長方形の画像の指定する場所に格納 SIKAKU(i,j,3)=MARU(y,x,3) j=j+1 //長方形展開後の次の色情報を格納する場所の列指定 a=a-0.24 //0.24°角度を移動 (半径480ドットの円の円周≒1500ドット、360/1500=0.24) end r=r-1 //最外周から1ドットずつ内側に移動 i=i+1 //長方形の画像の次の色情報を格納する場所の行指定 end この後さらに複数の長方形に展開した画像を結合して長い円筒にカメラを突っ込んだような画像から、 円筒を唐竹割りしたような展開画像を作りたいけど良い方法有りますでしょうか。 >>213 MATLABなら関数が置いてあるパスを登録する OCTAVEも同様に.octavercに パスの一覧登録しておく方法がある まだループが有るけど大分早くなったので途中経過・・・ 後は動画から連続する画像取得とその展開、展開画像の結合か・・・先は長い(´・ω・`) i=1 r=240 //半径r a=0:(360/1500):360 while(r>210) MARU_R=DR(round(py+r*sind(a)),round(px+r*cosd(a))) MARU_B=DG(round(py+r*sind(a)),round(px+r*cosd(a))) MARU_G=DB(round(py+r*sind(a)),round(px+r*cosd(a))) MARU_R=diag(MARU_R)' MARU_B=diag(MARU_B)' MARU_G=diag(MARU_G)' SIKAKU(i,ANS_yoko,1)=sum(MARU_R,'r') SIKAKU(i,ANS_yoko,2)=sum(MARU_B,'r') SIKAKU(i,ANS_yoko,3)=sum(MARU_G,'r') r=r-1 i=i+1 end quiver関数を使っているのに矢印がプロットされません ためしにscale=0にして自動スケーリングを使用しないよう設定したら 矢印が表示されました。しかしすごい大きな矢印とちいさい矢印が複数ありました これは大きいのと小さいのが入り乱れてるせいでスケールすると表示されなくなってしまうものなのでしょうか? ネットで調べてもいまいちquiverを掘り下げて説明しているところがなかったので こちらで質問させていただきます。 textscanを使ってテキストファイル(.txt)のデータを読み取った後、読み取ったテキストファイルを削除したいと考えています しかし、textscan後にdeleteを使ったり、手動で削除しようとすると「MATLABによってファイルは開かれているため、操作を完了できません。」 と表示され、削除できません。 現状では一度MATLABを再起動してからテキストファイルの削除を行っているのですが、再起動せずにMATLABからテキストファイルへの読み込みを終了させるコマンドはないでしょうか >>218 fclose()やってないからじゃないの? >>146 filter(lpc(x,3),1,x) シリアル日付値をx軸にすると、xlimで指定した範囲ぴったりにならないことがあります。 どうすればいいのか、どなたかご教示いただければ幸いです。 (例) t = datenum(2014,10,26,12,30,0:1/100:60-1/100); x = rand(1,6000); plot(t,x); xlim([t(1) t(100)]); datetick('x','MM:SS','keeplimits'); matlabのmaxは最初に見つけられたインデックスを返すのですが、最後に 見つけられたインデックスをかえすようにしたいのですが、方法が分かりません。 よかったら教えて下さい。 maxの引数になっている変数をA(end:-1:1)ってなのが一番楽じゃないか 後ろから数えたインデックスになってるけど全体サイズ分かってれば前からの位置もすぐ分かるし 一週間以上前のだからもう見てなさそうだけど fliplrとかflipudとか使ってもなんとかなりそう FDAtool使ったFIRフィルタの設計って、設定したフィルタ特性や量子化パラメータでは どんなに頑張っても実現出来ないときに、「出来ませんでした><」って教えてくれないの? 自分で特性グラフみて判断するしかない?? matlabで振動にFFTかけてるんですけど、 周波数帯域毎のパワーを時間軸に沿って表示する、というのを出来る関数は無いんですか? それか短時間フーリエ変換かな? 短時間フーリエ変換なら specrogram って関数がSignal Processing Toolboxにある 関数なくても短時間フーリエ変換程度ならなら 自作するかネットに転がってるだろ? ありがとうございます。 挙げて頂いたワードを元に調べた所、非定常振動の解析にはウェーブレットが向いているようなので、ウェーブレットでやってみようと思います。 MATLABって過去のバージョンとか使えないんですか? 今からだと2015しか使えない? 自分は過去バージョンダウンロードできるけど、 以前から保守契約してるからかもしれない。 すんません、y軸のメモリを10の二乗等で表示したいですが、どうしても"1e2"となってしまいます。 どうしても"10^2"のように表示させたいのですが、設定方法をご教示頂けますか? 自分はset(gca, 'xtick', 〜)とset(gca, 'xticklabel', 〜)使ってる。 >>234 返信ありがとうございます。 >自分はset(gca, 'xtick', 〜)とset(gca, 'xticklabel', 〜)使ってる。 set(gca, 'xtick', 〜)の〜の中身を教えて頂けますか?そこが分かればおそらく解決です。 >>235 みんなそういう使い方しませんし、そのようなことはマトラボじゃできません。 私の知る限りではgnuplot ならばできたはずですよ。 マトラボはあくまでも数値計算に特化したソフトウェアなので、グラフの調整などは不得意です。 >>235 たとえば、 set(gca, 'xtick', [1 10 100 1000]); set(gca, 'xticklabel', {'10^0', '10^1', '10^2', '10^3'}); とやればOK。 >>237 アドバイスありがとうございます。 しかしそのやり方だと文字通り"10^2"のように表されるんですね。 10の上付き表示はできないものなのでしょうか? >>238 だーかーらーマトラボはそんな変な設定しても結局あんたがしたいような表示はできません。 前も言ったけど、マトラボは計算に特化したソフトウェアだからね? 大体、set(gca,xrick,[........])でいちいち中身書くなんてアホでしょ? Gnuplot はそんなとこしなくても%Lみたく書けば、OKだよ。 ここにいるアホオタクは知らないだけのオタクだから、気をつけな〜(^ω^)/ >>238 自分の環境(Matlab 2015a)では上付き文字で表示されるので問題ないのですが、 2014バージョンあたりでグラフィックス周りが刷新されたのでそのせいかもしれません。 set(gca, 'TickLabelInterpreter', 'tex'); が使えれば、TeX文法でティックラベルが表記できます。 ちなみに、TeX文法つかいたくないときは set(gca, 'TickLabelInterpreter', 'none'); です。 ちなみにTeX文法をつかいたくないときは set(gca, 'TickLabelInterpreter', 'tex'); です。 他にmatalabスレが見つからなかったので教えて頂けないでしょうか? 個人ライセンス版の購入を考えているのですが、商用利用不可である以外は 通常のmatlabライセンスと機能等に変わりは無いのでしょうか? またライセンスサーバーは特定のpcに紐付けされるかたちになるのでしょうか? おまえの知りたい事は全てMathWorksのホムペに書いてある 超初歩的な疑問位少しは自分で探す努力しろ 1問目yes 2問目yes レスありがとう御座います! 何だかんだで親切すぎるw mathworksって振り込みクレカしか駄目なんですね。。。 さすがにVプリカはダメだろうし、クレカ入力は抵抗あるので一時見送りますorz 実験データから伝達関数を求める方法を教えてください。 具体的には、ハンマリング試験した加振力と加速度の時系列データがあって、 それらを用いて伝達関数(ボード線図)を描きたいです。 そして、その伝達関数を2次の振動系に近似し、変数を同定する方法も教えていただきたいです。 また、その伝達関数の実部、虚部に分解したコクアド線図も描きたいです。 どなたかよろしくお願いします。 >>249 matlab以前の問題もするけど・・・ 一応聞くけどコードに落とせる程度に手計算は終わってるんだよね? >>250 手計算とは具体的にどういったものでしょうか。 実験データ(エクセル、テキスト)の時系列データから そのまま関数を打つだけで伝達関数が出たりするのではないかと思っています。 探したりしていろいろ試しているのですがうまくいきません。 >>252 氏ね 何をどうしたら解決したのかくらい書けや ゴキが掲示板荒らしたとしか考えられん 二度と書き込むな、クズ 小野測器とか見れば参考になるよって解決したのか ダブルタップはしっかり省いてね ただ本人が解決したから、もう答えなくてもいいですよって意思表示しただけなのに きれるとか短気すぎんだろ >>255 短気すぎないわ。 そんな奴ただのスレ汚しのカスだから。 生きてる意味ないよ。端的にゴミゴキと言い表したいね。 ただしこの話題で盛り上がる気はないので以後、スルーで すんません。 Plotyyで2つの異なるy軸使ってグラフを書いたんだけど、y軸の色がそれぞれ曲線の色になってます。 軸はすべて黒にしたいのですが、なにかいい方法ありますか >>258 plotyyってそんなふうになるんだっけ・・・? 面倒だけどset(gca,〜)だったかで、直接軸の色を指定しちゃったら駄目かな >>259 ありがとうございます。 ちょっとそれでやってみますね。 ちなみにoctaveでも確認してみましたが、同様にこんな現象起きます >>260 グラフまわりで困ったら取り合えずset使っとけば良いよ 何でも出来るから慣れとくと役に立つかも 表示しているfigureを新しいwindowで開きつつコピーする方法は無いでしょうか? Windows環境で作成したMATLABのスクリプトをlinux環境で動作させたいです。 Win環境で動作するexeは生成できましたが、同様にlinuxで動作するバイナリファイルは作成できますか? すんません、複数のコメントアウト行と列の数が途中から異なる数値データを読み込む方法ってどうすればよいですか? 具体的には以下のようなデータを読み込みたいです。 == this is comment line 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 == this is comment line 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 2.56 2.67 2.34 3.45 textscan を使買ってみてもなかなかうまくいきません。 Fid = fopen('filename', 'r'); N = 8; While ~feof(did) C = textscan(Fid, '%f %f %f %f %f %f %f %f', N, commentStyle, '=='); End として, c{1}(一列目の数値データを見たい)をみても 2.56 が11行出てきません。 どこを改善すればよいでしょうか? 質問です。 X = [0.1:0.1:1.0] Y = [a(1) ...a(i)] i=10 Z = [b(1) ...b(I)] の行列があった時、X-Y平面上にZの高さ情報を色で表した図って書けますか? イメージ的には plot3 で書いたものをxy平面に射影したもので、zの高さ情報を色で表したものといった感じです。 >>265 pcolor Zは行列になってないとダメかもしれない conterfで描いた図に特定の値の等高線の太さだけを変えることって、できますか? >>267 しょうがないマジレスしてやるか matlab 特定の等高線レベルの強調表示 でググってみな hold on、hold off 使って線の太さと 等高線描画の範囲変えて図を重ねればいい >>269 全然反映されなちんです。。。 どうしまひょ? Mathworksのサイトにサンプルあるんだ から、先ずそれが動くか確認 それが問題無いなら自分のコードが 間違ってんだろ? >>271 マトラボのページはいつも peak関数を使うじゃないですか… それが本当に煩雑にしてるなぁと思うんですよね。 私の場合それぞれ独立したデータ x, y, z でコンター作ってるんです。 で、z = z0 となるときの等高線レベルのみを強調したいと考えておるのです。 >>273 そんなこと仰らずに助けてください。 お願いいたします conterfって使ったこと無いんだけど、そのz0の座標だけ抜き出して重ね書き&太さ調整できんの? どういうデータのグラフを描こうとしてるのかわからんけど、等高線で示してokな程度のものなら 適当に散布図とかでプロットの色・サイズを弄ったりしてもいいんじゃない? あーcontourfか orz 普段はimagescばっかだなぁ x = 0.1:0.1:1.0 y = [2 4 6 7 9 13 26 25 67 89] みたいなデータがあって y >= 10 なら破線、10以下なら実線てな具合でプロットすることできる関数ってあったっけか? 条件分岐とplotを使って書くと、y = 9と13の間で空白ができちまってなんともダサいのよね(9 < y < 13 までプロットされず空白になる) 条件ダブらせればいいんでないの? それか10の値内装してマーカー有り実線グラフの上からマーカー無し白点線とか 互換なソフトがあるのになぜ有料のものを使うのですか? matlab使えば分かるよ ってか言葉に互換性が有るだけで使い心地は全然違う >>281 どのくらい違うの? 今octave使ってるんだけど Pythonのnumpy使ってるけど、行列計算はmatlabが圧倒的に楽に書けるね その楽ってのがわからんのよねー マトラボはなんだがオプションが多すぎてなに追加したらいいのかわからんからなぁ 取りあえずデフォのmatlabだけで大体問題ないと思う 信号処理ならsignal~ toolbox追加するとか、後追いで対応できるしね というか、やっぱ本当に必要な関数は自分で作っちゃたほうが安心な気がするけどな homeライセンスならoffice感覚な値段だし試ししてみたら? >>285 そうしてみようかしら。。。 octave使いなんだけど、やはりマトラボさんの方が絶対いい!って言える? ごめんね、しつこくて。 (背中押して欲しい) octaveだとデフォルトでは使えないfuctionが結構あるけど、 追加しようと思えばできるから個人的にはoctaveでも問題ないけどなぁ MatlabはIDEが良くなってきたのとドキュメントがしっかりしてるところが魅力。 Matlabに10年ほど課金してきたけど、もうドキュメント読まなくても覚えちゃってるし、IDEなくてもEmacsでいいし、そろそろOctaveでいいやってなってる。 まぁぶっちゃけoctave自分から選ぶような層はあえてmatlab選ぶ必要なんて無いよねぇ cでもpythonでも金のかからない適当な方法選んでばっちり解析出来るイメージ 自分は仕事でどっぷりすぎてmatlab以外の選択肢は考えなかった口だわ;; matlab 使う仕事って学術系?企業だと使わないイメージ トヨタとか日産なんかの自動車の 研究開発で使ってるよ mathworksの創始者もmatlabは最初 数学科とかには見向きもされず 工学系の学生に受けが良かったって 語ってなかったっけ? >>288-290 なるほど〜 octave使えてればmatlabしなくても。。。ってことなのかな? それともoctave使う層の人間はmatlabにない関数やらは自分で作っちゃうよね?ってこと? そしたら最悪描画に限ったらgnuplotでもよくないかい? どっちかって言うと後者かな、自分で作っちゃうイメージ 気のせいかもしれないけど前にoctave触ったとき、メモリ馬鹿食いするプログラム運用するときや数千点プロットする時は matlabの方が軽いかなーって印象があったような気がする 大きいデータをいっぺんに扱わにゃならんとか、マルチコアフル回転させたいとかならmatlabがいいのかも(octaveあんまり詳しくないです・・・) matlabにおいて既定の設定ですとdoubleで保存されます。 そのため変数が例えば a=2.63890000000... というふうに 小数点に無駄な0が多く含まれておりますmatファイルで保存を行う場合、容量が大きくなってしまいます。 出来れば無駄な0をさくじょしたいのですがどのように行えばよいでしょうか よろしくお願いします ハローワークでも、自動車系で、 matlabの募集をたまに見る でも徐々に、R, matlabの仕事は、 Pythonへ置き換わっていくかも 仕事始めてから触りだした口だけど手計算のノリというか関数電卓の延長で使えるのが好きかな 画像処理も最新研究のmファイルが落とせるニッチな世界 後方互換性捨てるpythonなんて 怖くて仕事で使えねえよw 数年前のmatlabのparforはcやfortranの openmpと比べて並列効果が小さかっ たんだけど今はどうなんだろ? どの程度性能上がったかはしらんが単体だと4コアまでというクソ仕様 matlabでCAN通信を使いたいんだけどRTI CAN blocksetが見当たらないんだけどどうすればいいんですか? dSPACEでファームウェアの更新でDS1103CANをアップデートしてdSPACEでは対応してるみたいなんですがちょっとこれからどうすればいいか分からないです >>286 遅レスなんで見てないかもだが 非線形関数を最適化する fminsearch とか明らかに挙動が変わる octaveは最適解探すの直ぐ諦める感じ このレベルの関数自作できるのなら octaveでも構わないんだろうけど lsqcurvefitで非線形曲線の近似曲線を求めようとしてるんですが、よい曲線形に収束しません。 どうすればいいのでしょう? Matlab大好きな人がOctave は重すぎるって行ってけど 今はi686に最適化されてるから使ってる使っているCPUに最適化したら そこまで重くなさそうなんだけどどうなんだろう 質問失礼します。 ※下付き文字を便宜上[]で示します。 例えば水はH[2]O、二酸化炭素はCO[2]と表しています。 生物の個体数の変動を表したモデルとして、以下のようなロジスティック写像がある。 x[n+1]=ax[n](1-x[n]) x[n]は正規化されたn年目の生物の個体数、x[n+1]は次年の個体数。aはその生物の出生率として与えられる。 出生率aがもし3以下なら、その生物の個体数は一定に収束する。 しかし、aが3以上になると周期的な挙動を引き起こし、さらにaがある臨界点を超えると、非常に複雑な変動を観察することができる。 このロジスティック写像を視覚的に理解するため、MATLABを利用して以下に述べる様々なグラフィックを描させてみよ。 (1)時系列 横軸に時間(年次)n、縦軸に個体数x[n]をとり、ロジスティック写像の時間的な変動を観察せよ。 a=3とする。 (2)リターンマップ 横軸にx[n]、縦軸にx[n+1]をとり、ロジスティック写像におけるx[n]とx[n+1]の関係をプロットせよ。 a=3とする。 (3)分岐図 横軸に出生率a、縦軸にx[n]をとり。aの値によってx[1]、x[2]、…、x[n]がどんな値をとるか観察せよ。 よろしくお願いします。 何も難しいことない。 指示されたとおりにグラフを描くだけ。 spectrogram()関数について質問です 出力引数無しの場合スペクトログラムがプロットされますが、 出力引数[s,f,t,p]として、関数を使ったあと出力引数無しの場合と同じようなフィギュアをプロットしたいのですが何関数を使えばいいのでしょうか? 以下のような非線形の3階常微分方程式がある。 dx/dt =-y-z dy/dt =x+ay dz/dt =bx-(c-x)z (a=0.344 , b=0.4 , c=4.5) これをレスラー方程式という。 このレスラー方程式をMATLABによる数値微分によって解き、x(t),y(t),z(t)の挙動を次の2通りの方法でコンピュータ画面上に描いてみよ。 なお、常微分方程式の数値積分法についてはルンゲッタ法を参考にするとよい。 (1) x(t),y(t),z(t)の時間波形(横軸:時間(t),縦軸:x or y or zとした図)を描け。 また数値積分の時間の刻みΔtを何通りか変えて、Δtの値により波形が異なる様子を観察せよ。 (2) x,y,zを3軸にとったこの方程式の解軌道の3次元プロットを作成し(1)と同様に解軌道に及ぼす影響について観察せよ。 正直何を言っているのかすらわからずお手上げ状態です。 よろしくお願いします。 宿題やってもらいたいなら何でも質問スレにでも行けば? Neuralnetwork Toolboxを利用しようと思いサンプルを試していました。 しかし、パターン認識や時系列、クラスタリングと全てでサンプルデータを動かしてみることができませんでした。 どのエラーも、 「関数または変数 'network' が未定義です。」 と表示されます。 正直、サンプルを動かそうとしているのにエラーを吐かれて困っています。 VERコマンドでインストールされていることは確認しました。 R2013aとR2015aの両方で試しましたが同じエラーで実行できませんでした。 どうすればエラーを回避できるようになるでしょうか? vec = [1 2 3] この行ベクトルを指定した数だけ行の次元を増やして同じ値を入れるにはどうしたらいいですか? 2だったら vec2 = [1 2 3;1 2 3] 3だったら vec3 = [1 2 3;1 2 3;1 2 3] みたいなのを vec2 = ?(2,vec) vec3 = ?(3,vec) のように行いたいです >>315 まずrankを変えて行列を定義して、roopで順に入れ込んでいく。 >>315 vec2 = repmat(vec,2,1) vec3 = repmat(vec,3,1) >>319 surf(peaks, 'LineStyle', 'none') ってこと? マトラボのダウンロード番って一つのOSしか選べないのん? 当方、Macintosh、Linuxマシンで運用する予定なんやけど >>322 わいはいつもWin/Mac/Linの最新版ISOファイル落としてきとるがの >>323 えっ、それって割れちゃうやろ? 正規版でやで? matlabのhome版のDL購入(?)のクレジット決済ってVプリカでも可能ですか? >>325 325自身ですが、使えなかったらamazonで使えばいいかって感じで買ったら普通に買えました >>324 複数マシンにインストールしたいとき用に、ISOが公式に用意されてんの。 毎回ダウンロードだと帯域を食うでしょ。 基本的な質問で申し訳ないんですが、 配列A=zeros(5,2)みたいな配列があったとして、 2から4行目をB=[1,1]にするうまい方法ってありませんか? スカラーの場合みたいにA(2:4,:)=Bのように使える関数みたいなものはありませんか? A(2:4,:)=repmat(B,3,1) とかやるしかないんでしょうか? >>328 B=[1,1]はただの例で他の適当な1×2の配列(B[2,3]等)でもできる方法が知りたいです。 F(z,w)を定義して、fsolveでF=0を解きたいです ここで最初wは初期値を与えて、zについてまず値を求めます 次に2回目以降はw=z、前回のzの値に更新してふたたびzについてwを更新したFを解きたいです for文で10回繰り返すとして、wの値をfor文の中で更新しても関数を呼びたすたびに初期値のwになってしまいます どのようにすればwおよびFを更新できますか? ちなみに関数定義の中にwの値を与えず、実際のワークスペースでw=...と与えても入力引数が不足してますとエラーになってしまいます >>331 特に変数をglobalで宣言してないのですが、どのように変更するのでしょうか matlab homeだと出力したファイルに電子透かしっていうのがついてるらしいんだけど、これはどんな感じなの? contorf(x,y,z,20) すると等高線が20本引けるかと思うですが、等高線を消す方法ってありますか? >>335 contourf(x, y, z, 10, 'LineStyle', 'none') simulinkで、 2次元(x(t),y(t))のデータをグラフに表示させて、 時間経過(t)とともに変化させたいのですが、 そういうブロックあるんでしょうか? figureからパラコマの動画を作ってどのように推移していくか 見ようとしています。そこで figure for i=1:360; scatter(x(:,:,i),y(:,:,i),1,z(:,:,i),'filled'); hold on ..... end みたいな感じで作ってみたのですが 操作自体はあってるのですが データ量がすごく多く大変時間がかかるようでした…。 元のデータは640×480というデータ点数に それぞれxとyとzの座標データ(mm)がありまして、それが360枚分ございます。 scatterじゃなくてこっちのほうが軽い、や for文でやるべきではないなど全くわからない状態ですので どなたかご教授していただけるとありがたいです。よろしくお願いします。 fsolveを使って2次の非線形連立方程式を解こうとした所、「Equation solved at initial point.」 という結果が出力されました。 最初は本当に初期値がそのまま解になる事もあるかと思い色々と初期値を変えて再計算をした所、 あらゆる初期値で同じ結果が出力されるという結果になってしまい困っております。 この「Equation solved at initial point.」というのは方程式にどのような問題がある時に発生するものなのでしょうか? 私は初め方程式の値が小さすぎるために初期値の段階で0に収束してしまいソルバーが解に到達したと判断している…と考えたのですが、 これだとべらぼうに大きい初期値を用いた場合にも同じ結果になる事との説明が合わないですよね。 (ただ、方程式中の変数は三角関数の中に入っているので初期値の値に関わらず式の形的に0に収束しているという事もあり得るとも考えています。 すみません、この辺は私の理解不足で支離滅裂です)。 また、残差は仮に方程式をf(x,y)+a=0 とするとaの値がほぼそのまま出力され、アルゴリズムは信頼領域法を用いています。 >>341 そこまで判ってて方程式を晒そうとは思わないのかな >>341 大きいとか小さいとかじゃなくて最初から微分値が0なんじゃねーの 小学校からやり直せ メインの.mファイルとクラス定義を1ディレクトリにまとめて実行することってできる? 他人にプログラム使ってもらうときに、検索pathがどうのこうのと説明するのが面倒なんだけど… for文内で1ピクセルごとにまったく同じ処理をしているのに、繰り返すうちに計算時間が長くなっていき、forの最後では最初の1000倍から2000倍の計算時間がかかります 原因として何が考えられますか? 次元の異なる複数の配列を一つのベクトルとして扱いたいんですが可能でしょうか? 具体的には [[4x3] [5x2] [100x4]] といった感じです ※[4x3]は4行3列の配列です Matlabの使用用途で一番多いのはなんだろう 画像解析かな? eye trackingしたいんですけど、そういうのに使えるツールボックスあります? >>358 ありがとうございます! communityってところから探せば良かったんですね 自分の調べ方が悪かったです 学生の無料評価版をインストールしてから30日経ったので、製品版を買おうとライセンス更新とか色々したのですが、 再度評価版をインストールしてしまいました。 また無料で使えるみたいですが、何かの間違いですか? 出来るのなら5000円のtoolboxを買いたいです。 社会人なら格安の個人用途版でも買えば? 商業目的や研究にも使えないけどな 無料にこだわるならmatplotlib使ってCPythonで呼ぶのが割と実用的 >>363 誤爆してしまいました。すみません。 ∫F(x)G(x)dx このような定積分をintegralで行いたいのですが次元が合いませんとエラーが出てしまいます。 どのように記述したらよいのでしょうか? >>364 f()とg()の関数が何なのかわからんと何とも言えない F(x)=e^Ax Aは定数です G(x)はステップ関数やインパルス関数、ガウス波といった入力によって変化します integralを使用する際はベクトル入力した際出力も同じ大きさのベクトルが出力されないといけないから積があるとエラーが起きるね >>367 なるほど *を.*に変更したらエラーが直りました *だと行列の大きさが変わっていたのですね ありがとうございました 皆さん何かテキストから入りました? 大学で講義取ってないんですが、昔の先輩の研究を掘り起こすのにmatrabが必要で自習がしたいです ちなみに自分機械系でして、fortranとデータ整理にエクセルマクロをいじれる程度です… >>370 他言語経験があるなら、公式サイトのヘルプやフォーラムが良く整ってるので基本はそれを参照、あとはソフト付属のexampleを読み解けば何とかなるんでない?私は始めたあとに何冊かテキストぽいの買ってみたけど、最近の版から入った機能をよく使うせいか情報が古くてあまり役に立たなかったよ。 matlab使わんでもmatplotlibで用足りる 今から覚えるならIPythonとかだよね。いろいろ潰しも効くし。 質問です 凡例の順番を入れ替えたく構造体を作成し 入れ替え自体はできるようになりましたが マーカが入れ替わらず文字のみ順番が変わった状態になってしまいました ループ内でグラフを重ねて表示して ループを抜けたところで構造体作成→凡例ソート表示をしているからだと思うのですが マーカを入れ替える方法はグラフ表示前にソートを行うしかないでしょうか? >>379 ありがとうございます 現在グラフを描画する配列はcsv読み込み毎に全てループ内で上書きしており 格納もしていないので別の変数に保存して再描画を試してみようと思います delaunay分割についての質問です。 以下のコードを書いたのですが、三角要素がバラバラの位置にあるため有限要素法が使えません。 どのようにコードを変えたら良いのでしょうか。matlab歴一週間なので拙いコードですがよろしくお願いいたします。 clear close N = 9; L = pi; x = 0:L/(N-1):L; y = 0:L/(N-1):L; [x,y] = meshgrid(x,y); X = x(:); Y = y(:); XY = [X,Y]; tri = delaunayTriangulation(XY); boundaryedges = freeBoundary(tri)'; triplot(tri) axis equal IC = incenter(tri) hold on plot(XY(boundaryedges,1),XY(boundaryedges,2),'-r','LineWidth',2) numtri = size(tri,1); trilabels = arrayfun(@(P) {sprintf('T%d', P)}, (1:numtri)'); Htl = text(IC(:,1),IC(:,2),trilabels,'FontWeight','bold', ... 'HorizontalAlignment','center','Color','blue'); hold off 今現在Matlab2016aを持っていて、それとは別に古いverも入れたいのですが、ライセンスを新たに買わなければならないのでしょうか? 宜しくお願い致します。 matlab2016の入ってるPCで作ったプログラムをラズパイで動かしたいのですがどうすれば出来ますか? 各列の要素数が異なる行列って作れますか? C++のvectorみたいなイメージです それは「行列」ではない、というところから説明しなきゃならないんだろうか。 Simulinkで一定の動作を続けさせたいんだけどどうすればいいんだろう 車輪が目標位置に達したらバックしてスタート地点に戻るようにしたいけど一瞬だけ戻ってまた前に走り出しちゃう 確信は無いけど何となく理由がわかるのがもどかしいw すみませんが一つお伺いしてもよろしいでしょうか? データがある数値以内に達した時に一定の信号値を出し、その後データがフィードバックで別の数値の範囲内に達した時にその信号を0にしてフィードバックしまた数値の範囲内に達した時に一定の信号値が出るように… と繰り返し出来るようにmatlabでプログラムしたいのですがこれはtriggerブロックを二つ使えば出来るのでしょうか? 今は数値を読み取り一定値になったらtriggerブロック(初期条件を0)でコンスタントブロックからの出力1を出すようにしてその信号をresettrigger(別の値を参照)で一定の値になったら0にリセットするように組んで見たのですがなにぶんうまくいきません 学習結果をMatlabが入っていない別のPCで使いたいのですが、方法がわからず困っています trainnetworkで学習した結果をExportし、C++からLoadして利用することなどできるでしょうか? すみません quiverで 矢じりの形を円錐にすることは可能? ○次受けが多いほど退場率が早くなる。高くなる 直受けの50万 客:いつまでもうちにいていいよ 3次受けの50万(客は90万払ってる) 客:短期延長していい? 5次受けの50万(客は150万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ 長時間労働 高稼働 高スキル要求が多い 零細フリーランスサイトは5次受けから誰もできない難易度の高い仕事 余り物の仕事を紹介してくる。40万円代でやってくれと これならJIETから3次でいったほうがいいな 446非決定性名無しさん2017/08/02(水) 22:12:48.95 JIETに毎月5千円払えば3次から入場できるだろ? 高額をうたうフリーランスのサイトはだいたい5次から45万円 JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした 高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる 自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の間でやらしている。 372仕様書無しさん2017/08/11(金) 10:31:43.41 フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。 高額に見せているけど実際は50万前後 JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。 ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ 自称エージェントはJIETから流れてくる案件を転売してるだけだった。 JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×3 = 言い値50万以下 エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×1 悪質な言い値で50万以下 エンド - ユー子 - エージェント-JIET 公表価格 90~60 - JIETに加入して公表価格で応募ができる 途中で送ってしまいましたすみません。 グラフの上下x軸のラベルの付け方に関して質問です。 以下を満たすようなデータがあったとします。 y1[i] = f(x1[i]) y1[i] = g(x2[i]) で、plot(x1, y1) とした時、当然x軸のラベルにはx1が使われるとおもうんですけど, グラフ上のx軸のラベルに x2 をつけることは可能ですか? x2[i] = h(x1[i]) を満たすようなラベルを作りたいのですが、ご教示下さい ○次受けが多いほど退場率が早くなる。高くなる 直受けの50万 客:いつまでもうちにいていいよ 3次受けの50万(客は90万払ってる) 客:短期延長していい? 5次受けの50万(客は150万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ 長時間労働 高稼働 高スキル要求が多い フリーランスサイトを運営している零細ITの自称エージェントは労働市場から流れてくる案件を転売してるだけだった。 労働市場に加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×3 = 言い値50万以下 エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×1 悪質な言い値で50万以下 エンド - ユー子 - エージェント-JIET 公表価格 90~60 - JIETに加入して公表価格で応募できる eJobgo JIET JISA で検索 優良エージェント・優良サイト 首都圏IT(PE-BANK) プログラマーズ ハードネタいいのかな ryzen1800Xで動かしたら同価格帯のi74コアより速いかどうか詳しい人いない? matlabの以下の解の出し方がわかりません ベクトルの連立不等式で(大文字はベクトルもしくは行列、小文字はスカラー、||.||はノルムを表す) aXA ≧ b||BX|| ||CX|| ≦ c Aは既知 の列ベクトル、BCも既知の行列でスカラーの定数abcも既知の条件です。 求めたいのは未知のX=[x1 x2 , ... ,xn]の行ベクトルです。 数値解析ソフトのmatlabで解を出したいのですが、なにぶん初心者なので使い方がまだ使いこなせていません… pythonみたいなデフォルト引数の仕様にしてくれたら嬉しいけどまぁ無いんだろうな matlabはライブラリとしては最高だけど言語としては終わっとるから、Pythonから呼び出せるラッパーとかあるといいんだけどなぁ プログラミングの専門家じゃなくても手軽に簡単に使える 行列計算が比較的直感的(それに特化されてるから) よく使われる数値計算のライブラリが揃っている サンプルが豊富 symbolic math toolboxで時間微分したいときってどうしたらいいの? rsinθ を r dθ cosθ みたいな感じで結果を表示したいんですが 画像のx,yの原点を画像中心に持ってきたいんだけどどうすればいい? どういう形で画像データを表現しているのか知らんが、xyから縦横の半分を引くだけじゃないのん? >>420 たとえばjpegで600×800の画像だったとして、半分の[300,400]で引きたいんだけど [300,400]を800行600列分作る方法ってどうすればいいんだろう。 超初歩的な質問で申し訳ない。 >>422 画像からxyの半分を引くとrgbの値が0になっちゃう状況で困ってる。 画像のxyの方から引かせるにはどうすればいいんだろうか。 直接相関法を用いてインパルス応答を求めるプログラム作れって言われて作ったんだけど、全く違うと言われた なにが違うのか見て欲しい よろしく頼みます。 matlab初心者です。すみませんが分かる方お願いします a=linspace(0,1) b=linspace(0,0.5) x=a+b-ab aには0〜1までが0.01ずつ区切られて格納されているが 各aにおいてxが最小値となるbを求め、2次元描画せよ(縦軸がb、横軸がa サーバーに入ってるmatlabをx window使って動かそうとしたらライセンス認証云々で動かせませんでした サーバーがライセンス認証されてるだけでは駄目なのでしょうか? なんかコミュカと言うより自分の理解力が低くて何言ってるか全く分からん って感じじゃないのか。 >>427 は宿題なんかを代わりにやってな感じだろ >>427 これできないとか脳に障害あるレベルだろ… ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ 初期化中で起動後10分くらい時間かかるのなんとかしてくれ matlabあるある言っちゃうよ? ・rubyの気分でスクリプト中にexitと書いて全部オチる ・配列を行ベクトルで表現するか列ベクトルで表現するかについて毎回ちょっと悩む ・なんかおかしーな?で for i = length(x) ←これ Simulink起動時に ⑴倍率を100%にする ⑵起動時のファイル階層を一番上 っていう初期化処理を複数のsimulinkファイルにバッチ処理を行いたいんですけど、やり方知っている人いますか? ちなみにmatlab2015です。 matlabを勉強し始める上でおすすめのサイトや本はありますか? 質問です データを空間補間するときに、スプライン補間を用いてピークの値を強調することはできますか? 事前に設定した複数のシンボリックベクトルの要素の間に従属関係を設定したいと考えていますが、どのようにすればよいでしょうか。 エラーを起こしますが、イメージとしては以下のようなものです。 var_list=syms('x' , [1 2]) syms var_list(1)(var_list(2)) >>445 var_list=sym('x' , [1 2]) ですね。エラーに変わりはないですが… 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 DIFO2 関数が呼ばれた時に引数に値が入っているかチェックしたいんですが、「入力引数が不足しています。」とエラーになってしまいます。 (引数が3つ必要な関数をアプリケーションコンパイラでexe化し、cmdで何も引数を与えないような状況を想定) どうにか引数かあるかチェックする方法はないでしょうか? (なお、isemptyでは不可でした) matlab homeを商用で使っちゃった!って人いる? soecgram の構文て specgram(A,NFFT,Fs,Window,Noverlap); てな感じだと思うんだけど。 NFFT とか Noverlap の意味というか求め方がサッパリなんですが簡単に説明もらえますか? A は生データで Fs がサンプリングレートってことくらいしかわかりません。 http://vision.cs.illinois.edu/ ~vhedau2/Research/research_spatialLayout.html こちらのspatiallayoutの中に npred = classifier.wcs(1).dt.npred https://i.imgur.com/ZkvnQqg.jpg という一文がありまして、デバッグで止めてclassifierの中見るとこんな感じなんです https://i.imgur.com/xZdEfLb.jpg https://i.imgur.com/L2reaNI.jpg dtが属するclassregtreeにnpredと言ったプロパティは存在しないようですし、しかしmatlabでは普通に動作して29なる数字が返っています。 matlabの文法をまだいまいちよく分かってないのですがどういう仕組みになっていると考えられるでしょうか matlabが試用版なのでoctaveで動くようにしたいなと思ってたらoctaveではここで詰まるもので Toolboxって自分で作れるなら購入しなくてもいいってことだよね? windows10にmatlab 2019aを入れてます。 mexを勉強したくて、winSDK7.1を入れたのですが、matlab側でコンパイラとして認識してくれません(´・ω・`) どうやら、.NetFrameworkのバージョンが、4.7であるせいらしいのですが、win10のベースらしくアンインストールできません。.NetFramework4.0をインストールできれば、matlabで認識するらしいのですが、どうすりゃいいでしょうか。 minGWというコンパイラもあるのですが、今回使いたい機能が、winSDKにあるのです(´・ω・`) mingwでも、windows api使えました。 ありがとう >>412 Pythonデフォルト引数超便利すぎ。引数増やしても前の呼び出しが動くから何種類も関数作らなくて済む。 しかしPythonはnp.arrayとリストの2種類使い分けせざるを得ないとか、関数呼び出しにいちいちnp.とかつけるのも面倒。Python3のイテレータ返しも鬱陶しい。短いプログラム使う限りmatlab最高。 でも結局simulinkとか特殊ライブラリ使わない限り、安くてどこでも使える方に流れちゃう。仕事用matlab高すぎるしライブラリ買うのも面倒。しかしPythonはなんであれが全部無料なのか不思議だが。 >Pythonはなんであれが全部無料なのか MATLABに嫌気が注した人が集まってんじゃね 配列を戻り値とする関数から、変数に格納せずに要素を抽出って可能ですか? 変数に格納して要素を抽出する場合の例 a=dir('〜〜〜'); a(1); ←要素を抽出 やりたいこと dir('〜〜〜')(1); ←例えばこんな感じで変数に格納せずに要素を抽出 >>464 なぜそうしたいの? MATLABは返値を複数定義できるから、その表現は難しいのではないかな…。 やるならワンライナーで書く用のラッパー関数を作るとか…。 >>465 回答ありがとうです。 (やりたい理由は、変数たくさん作りたくないなぁ、1行で書けるならそっちのがいいなぁ程度です。) 処理結果を画像としてデスクトップに張りたいのですが、 figure(1); imshow(K);でもファイルは出るけど、 そのまま使える画像をデイスクトップ直接出力したい。 超初心者です。 ある観測値をhistfit で正規分布で近似しようとしています。 histfit をそのまま使うと,観測値のピークが正規分布のピークよりも上にきてしまいます。 フィッティングした正規分布のピークを観測値のピークに合わせる方法はありますか? すいません、simulinkでつくったブロック図をひとつのブロックにワンパックにできるみたいなのですが、それをやるための手順のなにかキーワードあれば教えていただけないでしょうか 自動車業界中心に使ってる人数は少なくないと思うんだけど 全然盛り上がらないねこのスレ 質問します。。 下記のようなtimetableの日付から指定して、Tempの値を変更したいのですが どのような書き方をすればいいでしょうか? よろしくお願いします。。 TT = 7x1 timetable Timestamps Temp ___________ ________ 24-Jun-2020 30 25-Jun-2020 25 26-Jun-2020 31 27-Jun-2020 30 28-Jun-2020 25 29-Jun-2020 32 以下のような関数funに対し,3変数をそれぞれ1〜10まで変化させて代入し計1000個の結果を見たいのですが, matlabではfor文を入れ子にすると処理速度が落ちると聞きました.for文を使わないで1000個の結果を出力する 方法はありませんでしょうか. よろしくお願い致します. syms x y z fun(x,y,z) = (x + y) * z for i=1:10 for j=1:10 for k=1:10 fun(i,j,k) end end end matlabほど書きやすいスクリプトないでしょ。 何で安くしないの? いつになったら値下げしてくれるの? っていうか、こんなに高いのに、誰が使うの? 昔、先生のライセンス1つ貰って、R2014 使ってたけど、確かに使いやすく便利だったな。 ただ、自分では高すぎて買えないから、Matlabの「fminsearch()」関数と同じ機能を RとかPythonとかで利用できないかな? 趣味や勉強の個人利用ならHOME EDITIONが使える 安いぞ 仕事ならダメ フリーが良ければ基本的なものはOCTAVEに大体あるぞ https://octave.sourceforge.io/octave/function/fminsearch.html >>480 おお! 導関数を使わない Nelder & Mead Simplex法だし、確かに Matlabとほとんど同じだ。性能の程は分からんけど。 っていうか、Octaveってサポート継続してたのか。 数値の書式についての質問です。 Format long E でたとえば A = 0.01 を代入すると ans = 1.0E-02 と出力されますが,これを ans = 0.1E-03 と表記させる方法ありますか? 他の言語で吐かれるファイル名が下のような書式で対応にこまってます >>482 工学表記にしたいと言うことならStyleをlongEngにする。 >> format longEng >>483 ありがとうございます。 なんだかマニュアルにないことまでご存知で頭が本当に下がります MATLABで画像解析の基礎のきでつまずいてしまいました。 白黒BMP画像を以下のようなかたちで描画させてみました。 fid=fopen("hoge.bmp","r","b"); BiWidth =fread(fid,1,'uint32'); BiHeight=fread(fid,1,'uint32'); YOKO=swapbytes(uint32(BiWidth)) TATE=swapbytes(uint32(BiHeight)) img=fread(fid,[1 YOKO* TATE],"uint8"); size(img) img=reshape(img,1, YOKO, TATE); size(img) img=permute(img,[2 3 1]); imshow(uint8(img)) 一応これでBMP画像を表示することはできたのですが、 Macで標準のプレビューでBMP画像を表示させ見比べたところ imshow で表示させた画像はプレビュー表示に比べてずいぶん上方向にズレていたのですが この原因がわかる方はいらっしゃいますでしょうか? MACを使っていないので、標準プレビューがどうなっているかわかりませんが、 # 編集中に送信してしまいました…… MACを使っていないので、標準プレビューがどうなっているかわかりませんが、 とりあえず、fopenしたらfcloseしておいたほうがいいかもしれませrん。 何がしたいのかわかるとそういう観点でみられるのですが、 これだけだとちょっと読み切れませんでした。 >>487 レスありがとうございます。 fclose しても結果変わらずでした。 何をしようとしているかですが、まず bmp 画像を読み込んで、それをそのまま単純にimshow 使って表示させる、をしたいです。 imshow で表示させると、他のビューワーとは異なった結果(画像)が表示されるのが問題です。 縦方向のpixelが縦方向に並行移動したような状況になってます。 *.slxcは何のファイルですか? クリックしてもsimulinkが開かないのですが キャッシュファイルって書いてあるから実体の方がないと開けないんじゃないか NVIDIA TAOかなりスゲーな 最終的にMATLAB食うんじゃないか? MATLABのweb版が月20時間まで無料で使えるみたい それはありがてえ ゆるくダラダラ勉強してたら期限切れになって困ってた MPC Toolboxでロボットは作れるの? ROS Toolboxが必要になる? 複雑になりそうだ 「MPC Toolbox」でググると「使い方」って サジェスチョンが出てくるから使い方が難しいのかね? MATLABのライセンスって永久ライセンスなの? 2022b買ったら2023a、2023b、2024aと無料でバージョンアップできる? 再帰関数に事前定義した配列を引数で渡して該当するブロックで埋めていく処理作ったらめちゃくちゃ処理に時間が掛かるようになりました 配列はグローバル化した方が良いんですかね? 朗報GoogleのBardさん、MATLABのサポートもできるらしい! 今のところ英語しかわからないみたいだけどw Yes, I can support MATLAB programming. MATLAB is a high-level programming language and numerical computing environment developed by MathWorks. It is used to perform mathematical and scientific calculations, including data analysis, algorithm development, and model creation. MATLAB is a powerful tool that can be used to solve a wide variety of problems. Here are some of the things that I can do with MATLAB: Perform mathematical and scientific calculations Analyze data Develop algorithms Create models Visualize data Communicate results If you have any questions about MATLAB programming, I would be happy to help. Just ask me! 正式にサポートが発表されているのはこの20 Sure, here are the 20 languages that I can support programming in: C++ Go Java JavaScript Python TypeScript Google Sheets functions R Julia Haskell Scala Kotlin Swift C# PHP Perl Ruby Lua Rust D ラズパイサポートパッケってラズパイで実行可能なプログラムが作れるの? 簡易版コーダー? ラズパイ5対応はいつ頃かな? read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる