如何将值附加到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,但可以调整。
答
如果你想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 matrices和matrix 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];
间隔和双打的大小是多少。间隔的价值是什么? 尝试是这样的: >> 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
感谢您的提示,@hash blue – 2010-06-23 15:29:04