Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 带blockproc的两个输出_Matlab - Fatal编程技术网

Matlab 带blockproc的两个输出

Matlab 带blockproc的两个输出,matlab,Matlab,我有一个函数,它计算一个3*3块的二进制模式的值,这个值是用中心像素对8个相邻像素进行阈值化的结果,并返回两个输出:二进制代码的十进制值,如果一致,则返回相同的十进制值,如果不一致,则返回59 function [out1,out2] = lbpblock(im) %... implementation details out1 = decimal ; out2 = uniform; end 问题是当试图像这样使用blockproc时 result = blockproc(im,[3 3],@


我有一个函数,它计算一个3*3块的二进制模式的值,这个值是用中心像素对8个相邻像素进行阈值化的结果,并返回两个输出:二进制代码的十进制值,如果一致,则返回相同的十进制值,如果不一致,则返回59

function [out1,out2] = lbpblock(im)
%... implementation details
out1 = decimal ;
out2 = uniform;
end
问题是当试图像这样使用blockproc时

result = blockproc(im,[3 3],@lbpblock);
结果数组只有两个维度(例如85*85),并且只有第一个输出

当我试着

[res1 res2] = blockproc(im,[3 3],@lbpblock); 
我得到“错误使用==>blockproc太多输出参数”。
我试图更改函数签名

function out = lbpblock(im)
%... implementation details
out = [decimal, uniform];
end
结果数组仍然是二维的,但现在(85*170)第一个输出存储在奇数列中,第二个存储在偶数列中。

是否有任何技巧可以让blockproc将结果存储在85*85*2数组中???

您可以通过在第三维中串联来实现NX2数组作为输出

例如:

im = magic(10);
r = blockproc(im, [3, 3], @func);

function r = func(im)
r1 = mean(im.data(:));
r2 = std(im.data(:));
r = cat(3, r1, r2);
end

重要的一行是
cat(3,output1,output2)

lbpblock
中只返回一个参数,比如
out
。使其成为一个结构或单元数组,以便:
out.first=out1
out.second=out2
。不幸的是:\Error在80无效输出类中使用==>blockprocInMemory。用户函数FUN返回了无效结果。结果的类别是cell。结果的类是struct。我不理解错误。你这样做了吗:在
out1=decimal之后;out2=均匀,写入
输出。第一个=输出1;out.second=out2
。仅返回
out
。在主文件中写入:
result=blockproc(im,[3],@lbpblock)事实上,我完全按照你说的做了,但是blocproc似乎不接受struct,因为它写在描述“一个返回矩阵、向量或标量的函数”中。我还尝试了$out={decimal udecimal};还得到了类的结果是cell。