我如何存储数组数组?

时间:2014-12-08 18:01:15

标签: arrays matlab

我正在编写一个函数,它返回一个我需要的两个数组的数组:

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?

2 个答案:

答案 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对数字作为二维列向量。

相关问题