function [ out ] = bsxfun( func, target, data )
%[ out ] = bsxfun( func, target, data )
%MATLABの新しいのにある、bsxfunっぽいもの。
%http://www.mathworks.co.jp/access/helpdesk_ja_JP/help/techdoc/ref/bsxfun.html
%『入力』
%func   種類
%target A
%data   B
%『出力』
%out	出力

name  = func2str(func);
MINUS   = 0;
TIMES   = 1;
RDIVIDE = 2;
LDIVIDE = 3;
PLUS   = 4;

type = -1;
if strcmp(name,'plus'),
	 type = PLUS;
elseif strcmp(name,'minus'),
	 type = MINUS;
elseif strcmp(name,'times'),
	 type = TIMES;
elseif strcmp(name,'rdivide'),
	 type = RDIVIDE;
elseif strcmp(name,'ldivide'),
	 type = LDIVIDE;
end

%row	height
%column width

[row,   column] = size(target);
[height, width] = size(data);

if ((height==1)&&(width==1)),
	 if (type == PLUS),
		  out = target + data;
	 elseif (type == MINUS),
		  out = target – data;
	 elseif (type == TIMES),
		  out = target .* data;
	 elseif (type == RDIVIDE),
		  out = target ./ data;
	 elseif (type == LDIVIDE),
		  out = target .\ data;
	 end
else
	 out = zeros(row,column);
	 for x=1:row,
		  for y=1:column,
			   a = mod(x – 1,height) + 1;
			   b = mod(y – 1,width)  + 1;
		  if (type == PLUS),
			   out(x,y) = target(x,y) + data(a,b);
		  elseif (type == MINUS),
			   out(x,y) = target(x,y) – data(a,b);
		  elseif (type == TIMES),
			   out(x,y) = target(x,y) * data(a,b);
		  elseif (type == RDIVIDE),
			   out(x,y) = target(x,y) / data(a,b);
		  elseif (type == LDIVIDE),
			   out(x,y) = target(x,y) \ data(a,b);
		  end
	 end
end

end

関連記事

  • MATLABを用いた相関係数のt検定MATLABを用いた相関係数のt検定 function[p] = TTestForCorrelationCoefficient(r, n, type) %Student's t-test of correlation coefficient %相関係数のt検定 %『入力』 %r 相関係数 %n 相関係数を調べた時のサンプル数 %type 1で片側検定, 2で両側検定(デフォルト) %『出力』 %p […] Posted in アルゴリズム
  • MATLABでExcelのTDISTとTINVを使うMATLABでExcelのTDISTとTINVを使う Excel の TDIST関数は、 TDIST(http://office.microsoft.com/ja-jp/excel-help/HP005209312.aspx) より引用 スチューデントの t 分布のパーセンテージ (確率) を返します。 数値 (x) は t の計算値で、この t に対してパーセンテージが計算されます。 t […] Posted in アルゴリズム
  • DirectXとOpenGLのビューポート行列の違いDirectXとOpenGLのビューポート行列の違い はじめに こんにちは! 3DCGの再勉強中のなたでです! 今まで、次の変換行列の違いをみてきました。 ・DirectXとOpenGLのビュートランスフォーム行列の違い ・DirectXとOpenGLの射影トランスフォーム行列の違い 本日は変換の最後のビューポート行列の違いを調べてみましょう。 といっても、ここまでくると右手座標系・左手座標系という話はなくなっているので、 […] Posted in アルゴリズム
  • RSA暗号の解説に出てくる数値の逆数のmodRSA暗号の解説に出てくる数値の逆数のmod RSA暗号に紹介には、必ず次のような式がでてきます。 これ 今日は、この式について解説します。 といっても・・・すみません。言い訳になりますが、 数学科出身ではなく、間違ったこというかもしれません。 それをふまえていただいて・・・解説させていただきます。 まず、m = (p - 1)(q - 1) […] Posted in アルゴリズム
  • Bresenhamアルゴリズムで線分の計算は早いのかなBresenhamアルゴリズムで線分の計算は早いのかな 以前、直線を描くのにこんなのを作った。 特に工夫点もない、素直な方法である。 #module "linem" #deffunc line2 int line_x1,int line_y1,int line_x2,int line_y2 line_xabs = abs(line_x1-line_x2) line_yabs = […] Posted in アルゴリズム
  • DirectXとOpenGLのカリングの設定方法の違いDirectXとOpenGLのカリングの設定方法の違い はじめに こんにちはー! 今日は、3D描写するときのテストの話をします。 テストと聞いて何を思い浮かびますでしょうか。 試験とか、勉強とかそんなことをきっと思い浮かべるでしょう。 作成した3Dポリゴンの頂点を描写するときも、 本当に描写していいのか、無駄ではないのか試験をしています。 いくつかテスト方法を紹介しましょう。 ・背面カリング(裏面カ […] Posted in アルゴリズム