正如问题所说。我在矩阵中有一列,在300000个条目中,多个元素中存在相同的值。例如
1000
1000
1000
3000
3000
6000
6000
我想做一个循环,其中每个不同的值执行另一个函数。为了澄清,我希望我的程序为具有值1000
的三行执行某些操作,然后为具有值3000的行执行其他操作,对具有值6000
的行执行另一操作。我做了switch
循环,但我不相信它在逻辑上是正确的。这是:
a = M(1,6)
switch a
case M(:,6) == a
y=sinx;
case M(:,6) != a
b = M(:,6)
y = 4
case M(:,6) != b
c = M(:,6)
z = 5
otherwise M(:,6) != c
d = M(:,6)
w = 6
end
答案 0 :(得分:0)
几个错误:
~
作为not
,因此~=
用于比较矢量。isequal(a,b)
,因为a == b
的结果是向量而不是逻辑true
或false
switch
已将M(:,6)
与a
进行了比较。你现在要检查的是:a == (M(:,6) == a)
这可能不是你想要的。M(:,6)
参数中使用switch
而不是a
。如果您希望每次M(:,6)
值更改后都使用其他功能,您可能需要尝试这样的循环。
a = M(:,6)
idx = 1;
for i = 1:numel(M(:,6))
switch idx
case 1
y=sinx;
case 2
b = M(:,6)
y = 4
case 3
c = M(:,6)
z = 5
otherwise
d = M(:,6)
w = 6
end
if M(i+1,6) ~= a
a = (M(i+1,6));
idx = idx + 1;
end
end