質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

Q&A

1回答

363閲覧

matlab 配列の指定した点における周辺の平均の求め方

sindemasuka

総合スコア6

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

0グッド

0クリップ

投稿2018/11/29 13:08

編集2018/12/03 09:58

前提・実現したいこと

ある2次元配列データdの各点d(i,j)における、列成分のみの周辺50点平均を求めるにはどうすればいいでしょうか。
例えばd(50,50)周辺50点d(25,50)~d(75,50) の平均値をave(50,50)の値として求めたいです。

又できれば、周辺50点を取れない場合は、先の50点をとって平均値を求めたいです。
例えばd(1,50)は、d(1,50)~d(50,50)の平均値を求めたいです。

発生している問題・エラーメッセージ

movmean関数を使うと200×1行列になってしまう。

エラーメッセージ

### 該当のソースコード MATLAB ソースコード for i = 1:rnum for j = 1:am1 ave = movmean(d(:,j),50); %d(,)は%200×61 又は sum = zeros(rnum,am1); %200×61 ave=zeros(rnum,am1); %200×61 for i = 1:rnum for j = 1:am1 for k = 1:50 if j == 1 c = 1; else if (i > k) sum(i) = sum(i) + d(i-k); ave(i) = sum(i)/k;             end ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Matlabを持ってなくて,Freematでしか試せませんが,次のような感じでしょうか?

matlab

1am1 = 61 2rnum = 200 3 4d = rand(rnum, am1) 5 6my_ave = zeros(rnum, am1) 7 8for i = 1:25 9 my_ave(i, :) = mean(d(1:50, :), 1) 10end 11for i = 26:(rnum-26) 12 my_ave(i, :) = mean(d((i-25):(i+25), :), 1) 13end 14for i = (rnum-25):rnum 15 my_ave(i, :) = mean(d((rnum-50):rnum, :), 1) 16end

sumは標準関数名で使われているので,変数に代入するのは危険かもしれません。

投稿2023/07/04 13:51

ujimushi_sradjp

総合スコア2091

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問