我正在编写一个函数,它返回一个我需要的两个数组的数组:
e.g.
arrayX = zeros(1, k);
arrayY = zeros(1, k);
for (i=1:k)
xk=x>i;
dec_nums = histc(bin2dec(num2str([xk(:) y(:)],'%1d')),0:3);
things = reshape(flipud(dec_nums),2,[])';
sensitivity = things(1) / (things(1) + things(3));
specificity = things(4) / (things(4) + things(2));
s1 = 1 - sensitivity
s2 = 1 - specificity
arrayX(i, :) = s1;
arrayY(i, :) = s2;
array = [arrayX, arrayY];
但是当我调用array(1)时,它只返回第一个数字,仅此而已?
CNC中 将其更改为array = [arrayX; arrayY]返回
array =
0.1061 0.1061 0.1061
0.1259 0.1259 0.1259
0.1324 0.1324 0.1324
0.9999 0.9999 0.9999
0.9997 0.9997 0.9997
0.9996 0.9996 0.9996
哪个看起来不正确....无论如何只是返回两个数组,这样当函数完成时我能够得到arrayX和arrayY?
答案 0 :(得分:2)
对,我找到了答案!要返回具有两个值的函数,您必须在函数上指定[x y],然后使用
调用它[x y] =比较(某事,somethingelse);
这会存储两个值
function [arrayX arrayY] = COMPARE( x, y )
%COMPARE Summary of this function goes here
% Detailed explanation goes here
k=3;
arrayX = zeros(1, k);
arrayY = zeros(1, k);
for (i=1:k)
xk=x>i;
dec_nums = histc(bin2dec(num2str([xk(:) y(:)],'%1d')),0:3);
things = reshape(flipud(dec_nums),2,[])';
sensitivity = things(1) / (things(1) + things(3));
specificity = things(4) / (things(4) + things(2));
s1 = 1 - sensitivity
s2 = 1 - specificity
arrayX(:, i) = s1;
arrayY(:, i) = s2;
end
答案 1 :(得分:0)
array
变量的维度为1 x 2k
,因此第一个元素实际上是arrayX
的第一个元素。
你可能想要的是这样的:
array = [arrayX ; arrayY];
此数组的尺寸为2 x k
。
您可以将其编入索引:
array(:,i)
将第i
对数字作为二维列向量。