scilab子矩阵定义错误

时间:2014-04-07 00:58:37

标签: scilab

我被困在创建矩阵矩阵(在这种情况下为向量)

到目前为止我有什么

index = zeros(size(A)) // This is some matrix but isn't important to the question
indexIndex = 1;
for rows=1:length(R) 
    for columns=1:length(K)       
        if(A(rows,columns)==x)
           V=[rows columns]; // I create a vector holding the row + column
           index(indexIndex) = V(1,2) // I want to store all these vectors
           indexIndex = indexIndex + 1
        end
    end
end

我尝试了各种方法从V中获取信息(例如V(1:2)),但似乎没有任何工作正常。

换句话说,我试图获得一系列积分。

提前致谢

1 个答案:

答案 0 :(得分:1)

我完全不明白你的问题。 A的大小是多少?什么是x,K和R?但在某些假设下,

使用列表

您可以使用list

// Create some matrix A
A = zeros(8,8)

//initialize the list
index = list();

// Get the dimensions of A
rows = size(A,1);
cols = size(A,2);

x = 0;

for row=1:rows
    for col=1:cols     
        if(A(row,col)==x)
           // Create a vector holding row and col
           V=[row col]; 
           // Append it to list using $ (last index) + 1
           index($+1) = V 
        end
    end
end

单索引矩阵

另一种方法是利用多维矩阵也可以用单个值索引的事实。

例如,创建一个名为a的随机矩阵:

-->a = rand(3,3)
a  =

0.6212882    0.5211472    0.0881335  
0.3454984    0.2870401    0.4498763  
0.7064868    0.6502795    0.7227253 

访问第一个值:

-->a(1)
 ans  =

    0.6212882 

-->a(1,1)
 ans  =

    0.6212882  

访问第二个值:

-->a(2)
 ans  =

    0.3454984  

-->a(2,1)
 ans  =

    0.3454984

这样就证明了单个索引的工作原理。现在将它应用于你的问题并敲出一个for循环。

// Create some matrix A
A = zeros(8,8)

//initialize the array of indices
index = [];

// Get the dimensions of A
rows = size(A,1);
cols = size(A,2);

x = 0;

for i=1:length(A)           
    if(A(i)==x)
        // Append it to list using $ (last index) + 1
        index($+1) = i; 
    end
end

没有for-loop

如果你只需要符合某种条件的值,你也可以做这样的事情

values = A(A==x);

比较双打时要小心,这些并不总是(不)等于你的期望。