【发布时间】:2013-12-28 21:58:27
【问题描述】:
我在使用 matlab 时遇到了一些问题。我正在尝试创建一个 2x5000(时间和位置)的新矩阵,并且我需要删除与以前的某个地方具有相同时间值的单元格。
第二件事:我有两个向量,我需要创建一个新向量,其中我有来自第一个向量的第一个元素,第二个来自第二个向量,依此类推(第三个来自第一个,第四个来自第二个) .
如何做到这一点?
【问题讨论】:
我在使用 matlab 时遇到了一些问题。我正在尝试创建一个 2x5000(时间和位置)的新矩阵,并且我需要删除与以前的某个地方具有相同时间值的单元格。
第二件事:我有两个向量,我需要创建一个新向量,其中我有来自第一个向量的第一个元素,第二个来自第二个向量,依此类推(第三个来自第一个,第四个来自第二个) .
如何做到这一点?
【问题讨论】:
第一个问题:使用unique的第二个输出参数,它返回非重复元素的索引。
第二个问题:
%example data
A=[1,2,3,4]
B=[5,6,7,8]
%connect to a matrix
C=([A;B])
%convert to a vector
C=C(:)
【讨论】:
脚本:
close all; clear all;
v1 = [1 2 3 4 5; 0.1 0.2 0.3 0.4 0.5];
v2 = [1 2 3 4 5; 0.15 0.25 0.35 0.45 0.55];
% merge
v12 = zeros(size(v1, 1), size(v1, 2) + size(v2, 2));
v12(:, 1:2:end) = v1;
v12(:, 2:2:end) = v2;
v12
% unique
i = 1;
while i < size(v12, 2)
items = find(v12(1, i) == v12(1,:));
if length(items) > 1
items = items(2:end);
v12(:, items) = [];
end
i = i + 1;
end
v12
输出:
v12 =
1.00000 1.00000 2.00000 2.00000 3.00000 3.00000 4.00000 4.00000 5.00000 5.00000
0.10000 0.15000 0.20000 0.25000 0.30000 0.35000 0.40000 0.45000 0.50000 0.55000
v12 =
1.00000 2.00000 3.00000 4.00000 5.00000
0.10000 0.20000 0.30000 0.40000 0.50000
【讨论】:
i 增量应该在 if 语句之外 - 我的错误。