matlab 函数调用参数位数必须一致吗,function有多个参数,但是调用时参数个数变少,怎么对应?...

function [h, array] = display_network(A, opt_normalize, opt_graycolor, cols, opt_colmajor)

% This function visualizes filters in matrix A. Each column of A is a

% filter. We will reshape each column into a square image and visualizes

% on each cell of the visualization panel.

% All other parameters are optional, usually you do not need to worry

% about it.

% opt_normalize: whether we need to normalize the filter so that all of

% them can have similar contrast. Default value is true.

% opt_graycolor: whether we use gray as the heat map. Default is true.

% cols: how many columns are there in the display. Default value is the

% squareroot of the number of columns in A.

% opt_colmajor: you can switch convention to row major for A. In that

% case, each row of A is a filter. Default value is false.

warning off all

%exist(A),测试A是否存在,'var'表示只检测变量

if ~exist('opt_normalize', 'var') || isempty(opt_normalize)

opt_normalize= true;

end

if ~exist('opt_graycolor', 'var') || isempty(opt_graycolor)

opt_graycolor= true;

end

if ~exist('opt_colmajor', 'var') || isempty(opt_colmajor)

opt_colmajor = false;

end

% rescale

A = A - mean(A(:));

%colormap(gray)表示用灰度场景

if opt_graycolor, colormap(gray); end

% compute rows, cols

[L M]=size(A);

sz=sqrt(L);

buf=1;

if ~exist('cols', 'var')%没有给定列数的情况下

if floor(sqrt(M))^2 ~= M %M不是平方数时

n=ceil(sqrt(M));

while mod(M, n)~=0 && n<1.2*sqrt(M), n=n+1; end

m=ceil(M/n);%m是最终要的小patch图像的尺寸大小

else

n=sqrt(M);

m=n;

end

else

n = cols;

m = ceil(M/n);

end

array=-ones(buf+m*(sz+buf),buf+n*(sz+buf));

if ~opt_graycolor

array = 0.1.* array;

end

if ~opt_colmajor

k=1;

for i=1:m

for j=1:n

if k>M,

continue;

end

clim=max(abs(A(:,k)));

if opt_normalize

array(buf+(i-1)*(sz+buf)+(1:sz),buf+(j-1)*(sz+buf)+(1:sz))=reshape(A(:,k),sz,sz)/clim;

else

array(buf+(i-1)*(sz+buf)+(1:sz),buf+(j-1)*(sz+buf)+(1:sz))=reshape(A(:,k),sz,sz)/max(abs(A(:)));

end

k=k+1;

end

end

else

k=1;

for j=1:n

for i=1:m

if k>M,

continue;

end

clim=max(abs(A(:,k)));

if opt_normalize

array(buf+(i-1)*(sz+buf)+(1:sz),buf+(j-1)*(sz+buf)+(1:sz))=reshape(A(:,k),sz,sz)/clim;

else

array(buf+(i-1)*(sz+buf)+(1:sz),buf+(j-1)*(sz+buf)+(1:sz))=reshape(A(:,k),sz,sz);

end

k=k+1;

end

end

end

if opt_graycolor

h=imagesc(array,'EraseMode','none',[-1 1]);%这里讲EraseMode设置为none,表示重绘时不擦除任何像素点

else

h=imagesc(array,'EraseMode','none',[-1 1]);

end

axis image off

drawnow;

warning on all

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值