Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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 如果行具有相似的值,则添加行_Matlab_Matrix - Fatal编程技术网

Matlab 如果行具有相似的值,则添加行

Matlab 如果行具有相似的值,则添加行,matlab,matrix,Matlab,Matrix,我是matlab的新手,我只是不明白matlab代码中的错误 首先,如果其他值相同,我想添加行值 例如,对于x的输入 x=[ 1 1; 1 2; 2 1; 3 1; 3 1 ] 我希望能够将我的函数返回为 z=[1 3; 2 1; 3 2] 我的代码: x=[1 1;1 3;1 0;3 1;3 5;4 7;4 5]; z=[]; i=1; a=0; k=1; sum=x(1,2); [sizex,n]=size(x); %fprintf('m-

我是matlab的新手,我只是不明白matlab代码中的错误

首先,如果其他值相同,我想添加行值

例如,对于x的输入

x=[ 1 1; 
    1 2;
    2 1;
    3 1;
    3 1 ] 
我希望能够将我的函数返回为

z=[1 3;
   2 1;
   3 2]
我的代码:

x=[1 1;1 3;1 0;3 1;3 5;4 7;4 5];
z=[];
i=1;
a=0;
k=1;
sum=x(1,2);
[sizex,n]=size(x);
%fprintf('m-k --->%d\n',sizex-k);
while i<=(sizex-k)

    if(x(i,1)== x(i+k,1))


        sum=x(i+k,2)+sum;
        k=k+1;

    elseif (x(i,1)~= x(i+k,1))

        z(1+a,1)=x(i,1);
        z(1+a,2)=sum;
        sum=x(i+k,2);
        i=i+k;
        k=1;
        a=a+1;
    end

end
x=[11;13;10;31;35;47;45];
z=[];
i=1;
a=0;
k=1;
总和=x(1,2);
[sizex,n]=尺寸(x);
%fprintf('m-k-->%d\n',sizex-k);

虽然i这可以通过使用从第一列中获取唯一标识符列表,然后使用从第二列中添加每个唯一标识符的总数来实现:

x = [1 1; 1 2; 2 1; 3 1; 3 1];
[vals, ~, index] = unique(x(:, 1), 'stable');
z = [vals accumarray(index, x(:, 2))];

z =
     1     3
     2     1
     3     2 

它必须理解你的目标是什么。我也不确定你是不是第一个证明你想要的东西是准确的(或者我没有弄明白)@ömerçel:很乐意帮忙!请记住,您可以将答案标记为。(暗示,暗示)