如何将值附加到2D数组?

问题描述:

我是MATLAB新手,我无法从文档中理解这一点。如何将值附加到2D数组?

function GotData(sender, args) 
    interval = args.DataBlock.TimeIntervalInMicroseconds; 
    doubles = args.DataBlock.AsDoubleArray(); 
    x = 0; 
    complexCount = length(double(doubles))/2; 
    DATA = zeros(complexCount); 
    for index = 1:(complexCount-1) 
     realnum = doubles(2 * index); 
     imagnum = 1i * doubles(2 * index + 1); 
     complex = realnum + imagnum; 
     x = x + interval; 
     DATA(index) = [x complex]; 
    end 
    disp(DATA) 
end 

我从.NET程序集中触发的事件中获取双精度数组。我将数组分开,以便每个偶数项(基于1的数组)都是一个虚数,每个奇数项都是实数。然后我创建一个复数和它的间隔的两项数组。然后我想将这个1D数组添加到2D数组中。我怎么做?

此刻我收到一个错误:In an assignment A(I) = B, the number of elements in B and I must be the same.。我该怎么做?

interval是1,但可以调整。

+1

间隔和双打的大小是多少。间隔的价值是什么? 尝试是这样的: >> d = [1 2 3 4 5 6] d = >> C = d(1:2:结束)+ I * d( 2:2:结束) c = 1.0000 + 2.0000i 3.0000 + 4.0000i 5.0000 + 6.0000i – 2010-06-23 15:11:33

+0

感谢您的提示,@hash blue – 2010-06-23 15:29:04

如果你想DATA是一个2-d数组,你需要对它进行初始化和索引它是这样:

% ...(your code)... 
DATA = zeros(complexCount-1, 2); % Initialize DATA to an N-by-2 matrix 
% ...(your code)... 
    DATA(index, :) = [x complex]; % Add the array to a row of DATA 
% ...(your code)... 

您可以检查出这些MathWorks公司有关进一步信息creating matricesmatrix indexing在文档链接MATLAB。

+0

这正是我所需要的。谢谢,@gnovice。 – 2010-06-23 15:30:54

我和gnovice一样写了同样的答案,但是他先被解雇了。 :)

此外,如果真实数据对应于奇数项和想象,甚至物品,你应该改变分配:

realnum = doubles(2 * index - 1); 
imagnum = 1i * doubles(2 * index); 

无论如何,我会向量化的代码以避免循环:

%# ... code to get doubles and interval variables 
n = numel(doubles); 
realnum = doubles(1:2:n)'; 
imagnum = 1i * doubles(2:2:n)'; 
x = interval.*(1:numel(realnum)).'; 
DATA = [x realnum + imagnum]; 
+0

关于矢量化的好处,但我认为'时间间隔'是一个单一的值,而不是一个数组。 – gnovice 2010-06-23 15:39:43

+0

@gnovice,你说得对,我刚刚更新。 – yuk 2010-06-23 15:40:48

+0

其实,'x = interval。*(1:numel(realnum))。';'应该就够了。 ;) – gnovice 2010-06-23 15:46:10