function myOctaveMontage(K)
% myOctaveMontage yritää toimia vastaavasti kuin 
% montage Octave-ympäristössä. Kuvien järjestys
% menee riveittäin vasemmalta oikealle.
%
% Epätoivoisesti
% yrittää lisätä lukemista helpottavat akselit ja 
% tiedot kuvien määrästä ja suuruudesta.
%
% HUOM! Matlabia varten "myMontage"
%
%
% Octave: axis "on" - Matlab: axis on
%  yms. yms.
%
%    figureH = myOctaveMontage(K, [figTitle, figH])
% 
%    figureH   kahva luotuun kuvaan, aktivoi "figure(figH)"
%    K         kuvakokoelma muodossa (r x c x 1 x n),
%              katso "help montage"
%    figTitle  valinnainen otsikkorivi, johon lisätään
%              kuvien lkm ja koko
%    figH      kahva olemassa olevaan ikkunaan, johon
%              kuvat halutaan piirretävän
%
% Esimerkki:
%    load 12345A;
%    myOctaveMontage(K, 'Alkuperäiset kuvat', 42);

% Jukka Parviainen, parvi@hut.fi, 15.12.2005

if nargin == 0
    error('Liian vähän argumentteja. Katso "help myOctaveMontage"');
end;

% MATLAB:
%if nargin <= 2
%    figH = figure;
%else
%    figH = figure(figH); 
%    % MATLAB
%    % clf;
%end;
% Octave:
if nargin > 1
  error('Liikaa argumentteja - tämä on vain Octavelle!');
end;
figH = figure;

r        = size(K,1);
c        = size(K,2);
n        = size(K,4);
if nargin == 1
    figTitle = ['Kuva/Fig ' num2str(figH)];
else
    figTitle = [figTitle ' [ n = ' num2str(n) ',  (' num2str(r) ' x ' num2str(c) ') ]'];
end;

% Korvataan rivi MonK = montage(K);
nR = ceil(sqrt(n)); % toivottavasti ei tule pyöristysvihreitä
nC = round(sqrt(n));
if (nC * nR < n)
  nR = nR + 1;
end;

F = zeros(nR*r, nC*c);

k = 0;
for iR = [ 0 : nR-1 ]
  for iC = [ 0 : nC-1 ]
    k = k + 1;
    if (k > n)
      break;
    else
      sR = (iR*r) + 1;
      sC = (iC*c) + 1;
      F( sR : sR+r-1, sC : sC+c-1) = K(:,:,1,k);
    end;
  end;
end;
% MATLAB:
% MonK = imshow(F, [0 255]); 
% Octave:
imshow(F, 256);
    
% Rivi MonK = montage(K) korvattu!

% MATLAB:
title(figTitle);
% Octave:
% ??
% gset title "sine with lines and cosine with impulses"

% MATLAB:
%MonRows   = size(get(MonK,'CData'),1)/r;
%MonCols   = size(get(MonK,'CData'),2)/c;
% Octave:
MonRows = nR;
MonCols = nC;
yTickPos  = round([0.5*r : r : (MonRows-0.5)*r+1]);
xTickPos  = round([0.5*c : c : (MonCols-0.5)*c+1]);
% MATLAB:
% axis on;
% Octave:
axis "on";
% MATLAB:
%set(gca,'XTick',[],'XTickLabel','');
%set(gca,'YTick',yTickPos,'YTickLabel',[1 : MonCols : n]);
% Octave:
% ?
