<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Latest comments for language 'Matlab' on doukaku.org</title><link>http://ja.doukaku.org/lang/matlab/</link><description>Latest comments for language 'Matlab' on doukaku.org(long)</description><language>ja</language><lastBuildDate>Sat, 22 Nov 2008 19:43:16 -0000</lastBuildDate><item><title>atsu-kan's comment on 九九の表示
</title><link>http://ja.doukaku.org/comment/4683/</link><description>



&lt;a href="http://ja.doukaku.org/62/"&gt;九九の表示&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/62/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/62/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;Matlabらしくベクトル計算で。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;a = kron(1:9, repmat(1, 1, 9));
b = repmat(1:9, 1, 9);
c = a.*b;
fprintf(&amp;#39;%d * %d = %2d\n&amp;#39;, [a; b; c])
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/4683/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/4683/</guid></item><item><title>匿名's comment on 正整数のゲーデル数化？
</title><link>http://ja.doukaku.org/comment/4669/</link><description>



&lt;a href="http://ja.doukaku.org/100/"&gt;正整数のゲーデル数化？&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/100/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/100/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;所詮は浮動小数点数なので大きなnについての精度は無考慮。&lt;/p&gt;
&lt;p&gt;primes(100)は100までの素数25個を返す。
25と決めうちしているのは気持ち悪いが、double型が正確に表わせるのは高々十数桁であり、その範囲で使うぶんにはとりあえずはOKとする。
桁数に応じた数の素数をとりだしたい場合は、第4行を次のように置き換えればよい:&lt;/p&gt;
&lt;pre class="literal-block"&gt;
if n &amp;lt; 6
  p = primes(11);  % Five smallest primes
else
  u = n*(log(n) + log(log(n)));  % An upper bound of the value of the nth prime
  p = primes(u);
end
&lt;/pre&gt;
&lt;p&gt;上界uは &lt;a class="reference" href="http://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0%E5%AE%9A%E7%90%86"&gt;ピエール・デザルトの定理&lt;/a&gt; による。&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function g = goedel(n)
  s = num2str(n) - &amp;#39;0&amp;#39;;
  n = length(s);
  p = primes(100);
  g = prod(p(1:n).^s);
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/4669/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/4669/</guid></item><item><title>atsu-kan's comment on ２進数の記述
</title><link>http://ja.doukaku.org/comment/4599/</link><description>



&lt;a href="http://ja.doukaku.org/98/"&gt;２進数の記述&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/98/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/98/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;p&gt;ビルトイン関数 bin2dec() があります．&lt;/p&gt;

&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;bin2dec(&amp;#39;01101001&amp;#39;)
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/4599/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/4599/</guid></item><item><title>shg's comment on 格子点の列挙
</title><link>http://ja.doukaku.org/comment/3276/</link><description>



&lt;a href="http://ja.doukaku.org/65/"&gt;格子点の列挙&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/65/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/65/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;p&gt;範囲の計算が変なまま出してしまったので再投稿。
&lt;/p&gt;
&lt;p&gt;同じく最後三行のコメントを外すと求めた格子点図示する。等距離の場合の順序をx軸を起点とした偏角の順にソートするという条件も満たしている。1000個目は [-8, 16]。
&lt;/p&gt;



&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function r = latticepointsaroundorigin(num)
% r = latticepointssorted(n) retruns a list of lattice points,
% in the order of  distance from the origin and polar angle.
% Uncomment the last three lines to show the locations of the points.
% (ja.doukaku.org Q65)
rg = ceil(sqrt(num/pi));
[x y] = meshgrid(-rg:rg);
pts = [x(:) y(:) sqrt(x(:).^2+y(:).^2) atan2(-y(:),-x(:))];
r = sortrows(pts, [3,4]);
r = r(1:num,1:2);
% figure
% axis([-rg rg -rg rg])
% text(r(:,1),r(:,2),num2cell(1:num))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/3276/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/3276/</guid></item><item><title>shg's comment on 格子点の列挙
</title><link>http://ja.doukaku.org/comment/3275/</link><description>



&lt;a href="http://ja.doukaku.org/65/"&gt;格子点の列挙&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/65/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/65/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;p&gt;求める個数を引数として与えると、格子点を行列を返す。最後の三行のコメントを外すと求めた格子点をグラフ上に表示する。
&lt;/p&gt;



&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function r = latticepointsaroundorigin(num)
% r = latticepointssorted(n) retruns a list of lattice points,
% in the order of  distance from the origin and polar angle.
% Uncomment the last three lines to show the locations of the points.
% (ja.doukaku.org Q65)
rg = ceil(sqrt(num)/2);
[x y] = meshgrid(-rg:rg);
pts = [x(:) y(:) x(:).^2+y(:).^2 atan2(-y(:),-x(:))];
r = sortrows(pts, [3,4]);
r = r(1:num,1:2);
% figure
% axis([-rg rg -rg rg])
% text(r(:,1),r(:,2),num2cell(1:num))
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/3275/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/3275/</guid></item><item><title>shg's comment on 仲間はずれの判定
</title><link>http://ja.doukaku.org/comment/2702/</link><description>



&lt;a href="http://ja.doukaku.org/53/"&gt;仲間はずれの判定&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/53/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/53/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;p&gt;本質の部分はuniqueで種類を取り出してhistcで数えてsortで数の多い順にするところまでだが、その後各場合によって条件分岐して出力を整えるところはあまりすっきりしてない。
&lt;/p&gt;



&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function [type majority singular] = uniformity(x)
%[type majority singular] = uniformity(x)
%  checks uniformity of vector x and returns
%  1 when x is uniform (or all elements are the same),
%  2 when x is uniform except for a single element with a different value,
%  or 3 when x is multiform (contains three or more values).
%  In the cases of 1 and 2, the value of the majority is returned. In the case
%  of 2, the value of the singular element is also returned.
% (ja.doukaku.org Q53)
majority = -1; singular = -1;
r = unique(x);
h = histc(x,r);
[hs k] = sort(h,&amp;#39;descend&amp;#39;);
type = length(r);
if type==1
    majority = r(k(1));
elseif type==2 &amp;amp;&amp;amp; hs(2)==1
    majority = r(k(1));
    singular = r(k(2));
else
    type = 3;
end
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2702/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2702/</guid></item><item><title>shg's comment on 重複無し乱数
</title><link>http://ja.doukaku.org/comment/2615/</link><description>



&lt;a href="http://ja.doukaku.org/46/"&gt;重複無し乱数&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/46/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/46/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;p&gt;&lt;a href="http://ja.doukaku.org/comment/2264/"&gt;#2264&lt;/a&gt;の指摘をみてなるほどと思ったので簡単なテスト。順位相関を使ってみた。
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ja.doukaku.org/comment/2285/"&gt;#2285&lt;/a&gt;のコード(MATLAB標準のrandpermも同じ方法)は最初に乱数を要求された数列の個数分だけ作り、その順序を返す。MATLABのsortは値が同じ場合は順序を保存するので、たとえば1番目と2番目の乱数が同じ数字だと必ず1が2の前になってしまう。
&lt;/p&gt;
&lt;p&gt;投稿のコードは乱数の有効桁数(最初の行の最後の引数)を制限し、生成した数列とその位置の順位相関の分布と平均を表示する。有効桁数を1にした場合はかなり偏りが生じるが、3桁くらいでほとんど偏りが無い。順位相関を見る限りでは、普通の精度の乱数を使えばこのアルゴリズムでの偏りを気にする必要は無さそう。
&lt;/p&gt;



&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;x = bingo(25,1000,1);
rho = corr((1:size(x,2))&amp;#39;,x(1:size(x,1),:)&amp;#39;,&amp;#39;type&amp;#39;,&amp;#39;Kendall&amp;#39;);
figure(1); hist(rho,-1:0.1:1); axis([-1 1 0 300])
fprintf(&amp;#39;Mean = %f, skewness = %f\n&amp;#39;, mean(rho), skewness(rho));

function r = bingo(n,k,p)
% r = bingo(n,k) returns a k-by-n array, each row of which is a random
% permutation of 1:n, using random numbers with p significant digits .
[m r] = sort(randr([k n],p),2);

function r = randr(M,p)
r = floor(rand(M).*10^p)./10^p;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2615/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2615/</guid></item><item><title>shg's comment on 重複無し乱数
</title><link>http://ja.doukaku.org/comment/2297/</link><description>



&lt;a href="http://ja.doukaku.org/46/"&gt;重複無し乱数&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/46/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/46/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;p&gt;最初の投稿でえらそうに別解です、なんて書いたけどMATLABのrandpermは実は.mファイル(つまりMATLABで書かれたスクリプト)でその中身は投稿したコードと全く同じだということに気付いた。情けないのであらためて別解。前と同様第二引数で何個生成するか指定する。sortを使う方法よりずいぶん遅い。次のようにすると計算時間の測定と順序が均等かどうかのおおまかな確認ができる。
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tic;r=bingo(100,10000);bar(sum(r,1));toc
&lt;/code&gt;&lt;/pre&gt;


&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function r = bingo(n,k)
% r = bingo(n) retruns a random permutation of 1:n.
% r = bingo(n,k) returns a k-by-n array, each row of which is a random
% permutation of 1:n.
% (ja.doukaku.org Q46)
if nargin&amp;lt;2
    k = 1;
end
[s r] = meshgrid(1:k,1:n);
% q = zeros(k,2);
for p = n:-1:2
    q(:,1) = ceil(rand(k,1)*p);
    q(:,2) = p;
    q = q+s(1:2,:)&amp;#39;*n-n;
    r(q) = r(q(:,[2 1]));
end
r = r&amp;#39;;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2297/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2297/</guid></item><item><title>shg's comment on 重複無し乱数
</title><link>http://ja.doukaku.org/comment/2292/</link><description>



&lt;a href="http://ja.doukaku.org/46/"&gt;重複無し乱数&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/46/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/46/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  
&lt;p&gt;標準で必要な関数があるのにあえて別解を用いるメリットが最初の例では特に無かったので、少し書き換えてk個の列を一度に返せるようにした。標準のrandpermでk個生成するにはループでk回呼ばないといけない。余談だがMATLAB7.4ではデフォルトの乱数生成アルゴリズムとして&lt;a href="http://ja.doukaku.org/comment/2269/"&gt;#2269&lt;/a&gt;さんのリンク先でも紹介されているメルセンヌ・ツイスタが採用されている。
&lt;/p&gt;



&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function r = bingo(n,k)
% r = bingo(n) retruns a random permutation of 1:n.
% r = bingo(n,k) returns a k-by-n array, each row of which is a random
% permutation of 1:n.
% (ja.doukaku.org Q46)
if nargin&amp;lt;2
    k = 1;
end
[m r] = sort(rand([k n]),2);
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2292/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2292/</guid></item><item><title>shg's comment on 重複無し乱数
</title><link>http://ja.doukaku.org/comment/2285/</link><description>



&lt;a href="http://ja.doukaku.org/46/"&gt;重複無し乱数&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/46/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/46/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  標準のrandpermという関数が問のbingoと全く同じ動作をします。投稿のコードはsortがソート前の順序を返すことを使った別解です。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function r = bingo(n)
[m r] = sort(rand(1,n));
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2285/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2285/</guid></item><item><title>shg's comment on ダブル完全数
</title><link>http://ja.doukaku.org/comment/2204/</link><description>



&lt;a href="http://ja.doukaku.org/25/"&gt;ダブル完全数&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/25/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/25/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  ループを使わないで書いてみた。手元のマシンで2分くらいかかった。メモリを食うし、ループを使う方がずっと速い。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function r = doubleperfectnumber(rmax)
% Return every integer, the double of which is equal to the sum of its divisors
% (ja.doukaku.org Q25).
[m n] = meshgrid(uint16(1:rmax-1),uint16(1:rmax));
m(find(m(:)&amp;gt;=n(:))) = 0;
m(find(mod(n,m)~=0)) = 0;
r = find(sum(m,2)==n(:,1)*2);
% plot(1:rmax,sum(m,2),1:rmax,n(:,1));
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2204/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2204/</guid></item><item><title>shg's comment on 倍数になる13進数
</title><link>http://ja.doukaku.org/comment/2193/</link><description>



&lt;a href="http://ja.doukaku.org/14/"&gt;倍数になる13進数&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/14/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/14/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  ループを使う方法は既に出ているので、ループを使わない方法で書いてみた。順番にチェックするのではなく全部計算するので、調べる範囲の上限を与えなければいけないしメモリも食う。条件を満たす最小の数を返せというこの問題に対しては効率のいい方法とは言えない。例えばmからnまでの整数で条件を満たすものを全て見つけろ、というような問題だとするとループより速いかも? 最後2行のコメントを外すと13進数とみなす場合と10進数とみなす場合との比をグラフに表示する。この比が整数となる数字列が条件を満たすことになる。最後から3行目のminを外すと範囲内の全部の答を出力する。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function n = finddoubleinb13(rmax)
% Returns a sequence of digits that is twice bigger in base 13 than in base 10.
% The numbers from 10 to rmax in base 10 will be checked (ja.doukaku.org Q14).
n10 = (10:rmax)&amp;#39;;
n13 = base2dec(num2str(n10),13);
idx = find(~mod(n13(:),n10(:)));
n = min(n10(idx));
% plot(n10,n13(:)./n10(:))
% grid on
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2193/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2193/</guid></item><item><title>shg's comment on 全ての組み合わせ
</title><link>http://ja.doukaku.org/comment/2184/</link><description>



&lt;a href="http://ja.doukaku.org/44/"&gt;全ての組み合わせ&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/44/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/44/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  とりあえず御言葉に甘えて数字のみ対応。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function c = multisetcomb(varargin)
% return all combinations of items in given column vectors by picking up one
% item from each at once.
s1 = varargin{1};
s2 = varargin{2};
c = [repmat(s1,size(s2,1),1) sortrows(repmat(s2,size(s1,1),1))];
if length(varargin) &amp;gt; 2
    c = multisetcomb(c,varargin{3:end});
end
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2184/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2184/</guid></item><item><title>shg's comment on 長方形の交差判定
</title><link>http://ja.doukaku.org/comment/2135/</link><description>



&lt;a href="http://ja.doukaku.org/23/"&gt;長方形の交差判定&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/23/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/23/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;pre class='compact'&gt;標準でrectintという関数があるので引数を合わせただけ。コメントアウトしてある最後の三行は交差の状態を図示。&lt;/pre&gt;
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5
6
7
8
9&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function a = checkrectoverlap(r1, r2)
%  returns positive value if two rectangles are overlapped, zero if not.
%  r1,r2: [left top right bottom]
rr1=r1-[0 0 r1(1:2)];
rr2=r2-[0 0 r2(1:2)];
a = rectint(rr1,rr2);
% rectangle(&amp;#39;Position&amp;#39;,rr1);
% rectangle(&amp;#39;Position&amp;#39;,rr2);
% axis equal
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2135/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2135/</guid></item><item><title>shg's comment on アレイのuniq
</title><link>http://ja.doukaku.org/comment/2101/</link><description>



&lt;a href="http://ja.doukaku.org/16/"&gt;アレイのuniq&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/16/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/16/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  MATLABの標準関数uniqueはソートした結果を返すが、オプションを与えることによって各要素のソート前の位置を得ることができる。それを用いて元の順序を復元する。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function y = unsortuniq(x)
[b i] = unique(x,&amp;#39;first&amp;#39;);
bi = sortrows([b;i]&amp;#39;,2)&amp;#39;;
y = bi(1,:);
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2101/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2101/</guid></item><item><title>shg's comment on 呼んだのは誰？
</title><link>http://ja.doukaku.org/comment/2097/</link><description>



&lt;a href="http://ja.doukaku.org/28/"&gt;呼んだのは誰？&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/28/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/28/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  dbstackでファイル名やそのファイル名の中の何行目で呼ばれたかも取得可能。デバッグ目的の関数なので。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function foo
st = dbstack;
st(2).name
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2097/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2097/</guid></item><item><title>shg's comment on リストを逆順に表示
</title><link>http://ja.doukaku.org/comment/2089/</link><description>



&lt;a href="http://ja.doukaku.org/27/"&gt;リストを逆順に表示&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/27/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/27/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  MATLABは多くの関数が入力としてスカラーだけでなくベクトルを受け入れる。fprintfもそういう関数の一つなのでベクトルを与えると個々の要素に対してフォーマット付き出力をしてくれる。これを利用。ただし要素の型に応じてフォーマット指定文字列の部分を変更しないといけないのが難点。投稿のコードは整数を想定。ベクトルを逆順にする部分はfliplrという関数が用意されてるけどあえて違う書き方で。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function revdisp(v)
fprintf(&amp;#39;%d\n&amp;#39;,v(length(v):-1:1));
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2089/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2089/</guid></item><item><title>shg's comment on 「組合せ型の最小完全ハッシュ関数」の逆関数
</title><link>http://ja.doukaku.org/comment/2088/</link><description>



&lt;a href="http://ja.doukaku.org/36/"&gt;「組合せ型の最小完全ハッシュ関数」の逆関数&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/36/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/36/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  とりあえず簡潔に。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;function data = invoptcombhash(x, n, m)
combpos = nchoosek(1:n,m);
data = zeros(1,n);
data(combpos(x,:)) = 1;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2088/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2088/</guid></item><item><title>shg's comment on テスト
</title><link>http://ja.doukaku.org/comment/2087/</link><description>



&lt;a href="http://ja.doukaku.org/1/"&gt;テスト&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/1/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/1/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  ログインして投稿テスト。
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;y = [0 1 0];
for k = 1:10;
    disp(num2str(y(2:end-1)));
    y = [0 y(1:end-1)+y(2:end) 0];
end
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2087/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2087/</guid></item><item><title>匿名's comment on テスト
</title><link>http://ja.doukaku.org/comment/2086/</link><description>



&lt;a href="http://ja.doukaku.org/1/"&gt;テスト&lt;/a&gt;
(&lt;a href="http://ja.doukaku.org/1/nested/"&gt;Nested&lt;/a&gt; 
 &lt;a href="http://ja.doukaku.org/1/flatten/"&gt;Flatten&lt;/a&gt;)


&lt;hr&gt;
  &lt;pre class='compact'&gt;投稿のテスト。&lt;/pre&gt;
&lt;hr&gt;
  
    &lt;table&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;pre&gt;1
2
3
4
5&lt;/pre&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;y = [0 1 0];
for k = 1:10;
    disp(num2str(y(2:end-1)));
    y = [0 y(1:end-1)+y(2:end) 0];
end
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    &lt;div align = "right" style="margin-right: 1em;"&gt;
      [&lt;a href="http://ja.doukaku.org/lang/matlab/"&gt;
      Matlab
      &lt;/a&gt;]
      [&lt;a href="http://ja.doukaku.org/comment/2086/download/"&gt;
      download code
      &lt;/a&gt;]
      &lt;/a&gt;]
    &lt;/div&gt;
    &lt;hr&gt;
  

</description><guid>http://ja.doukaku.org/comment/2086/</guid></item></channel></rss>