我有如下矩阵; 从计算会有一些值,该值将是具有相同的值彼此当图表描绘(我用散点图), 这里的问题是如何知道/识别计算正在给匹配数据,并可以将其存储在表中。 我曾尝试使用查找功能的MATLAB中,但出现错误。
A = [2/3 -1/3 -1/3;
-1/3 2/3 -1/3;
-1/3 -1/3 2/3];
B=[0 0 0;
0 0 1;
0 1 0;
0 1 1;
1 0 0;
1 0 1;
1 1 0;
1 1 1];
d= [2/3 -1/3 -1/3];
q = [0 0.5773 -0.5773];
for i = 1:size(B,1)
p1 = A * B(1,:)' -A * B(i,:)';
dtransformation0a(i) = d*p1;
qtransformation0a(i) = q*p1;
p2 = A * B(2,:)' -A * B(i,:)'
dtransformation0b(i) = d*p2;
qtransformation0b(i) = q*p2;
p3 = A * B(3,:)' -A * B(i,:)';
dtransformation0c(i) = d*p3;
qtransformation0c(i) = q*p3;
p4 = A * B(4,:)' -A * B(i,:)';
dtransformation0d(i) = d*p4;
qtransformation0d(i) = q*p4;
p5 = A * B(5,:)' -A * B(i,:)';
dtransformation0e(i) = d*p5;
qtransformation0e(i) = q*p5;
p6 = A * B(6,:)' -A * B(i,:)';
dtransformation0f(i) = d*p6;
qtransformation0f(i) = q*p6;
end
figure
scatter(dtransformation0a,qtransformation0a,100,'b.')
hold on
scatter(dtransformation0b,qtransformation0b,100,'b.')
hold on
我没有访问MATLAB解释所以我现在不能测试它自己,但这应该工作:
A = [2/3 -1/3 -1/3;
-1/3 2/3 -1/3;
-1/3 -1/3 2/3];
B = [0 0 0;
0 0 1;
0 1 0;
0 1 1;
1 0 0;
1 0 1;
1 1 0;
1 1 1];
d = [2/3 -1/3 -1/3];
q = [0 0.5773 -0.5773];
for i = 1:size(B,1)
p1 = A * B(1,:)' -A * B(i,:)';
dtransformation0a(i) = d*p1;
qtransformation0a(i) = q*p1;
p2 = A * B(2,:)' -A * B(i,:)'
dtransformation0b(i) = d*p2;
qtransformation0b(i) = q*p2;
p3 = A * B(3,:)' -A * B(i,:)';
dtransformation0c(i) = d*p3;
qtransformation0c(i) = q*p3;
p4 = A * B(4,:)' -A * B(i,:)';
dtransformation0d(i) = d*p4;
qtransformation0d(i) = q*p4;
p5 = A * B(5,:)' -A * B(i,:)';
dtransformation0e(i) = d*p5;
qtransformation0e(i) = q*p5;
p6 = A * B(6,:)' -A * B(i,:)';
dtransformation0f(i) = d*p6;
qtransformation0f(i) = q*p6;
end
X = [dtransformation0a, dtransformation0b]; %Assuming dtransformation0a and dtransformation0b are row martices.
Y = [qtransformation0a, qtransformation0b]; %Assuming qtransformation0a and qtransformation0b are row martices.
my_points = [X';Y']; %Each row of my_points will represent a particular point.
my_points = unique(my_points, 'rows'); %Get unique rows, hence points.
figure
scatter(my_points(:,1),my_points(:,2),100,'b.')
让我知道,如果你面对任何问题。
**
编辑!!
**
按您的要求说,我的理解是,你想显示那些产生价值,比如说计算, (0,0)
; 如果这确实是你想要的,你应该能够通过更换循环部分得到它:
my_point = [0, 0];
for i = 1:size(B,1)
p1 = A * B(1,:)' -A * B(i,:)';
dtransformation0a(i) = d*p1;
qtransformation0a(i) = q*p1;
p2 = A * B(2,:)' -A * B(i,:)'
dtransformation0b(i) = d*p2;
qtransformation0b(i) = q*p2;
p3 = A * B(3,:)' -A * B(i,:)';
dtransformation0c(i) = d*p3;
qtransformation0c(i) = q*p3;
p4 = A * B(4,:)' -A * B(i,:)';
dtransformation0d(i) = d*p4;
qtransformation0d(i) = q*p4;
p5 = A * B(5,:)' -A * B(i,:)';
dtransformation0e(i) = d*p5;
qtransformation0e(i) = q*p5;
p6 = A * B(6,:)' -A * B(i,:)';
dtransformation0f(i) = d*p6;
qtransformation0f(i) = q*p6;
if(dtransformation0a(i)==my_point(1))
fprintf("dtransformation0a => (%f = %f * %f;)\n",dtransformation0a(i),d,p1);
end
if(dtransformation0b(i)==my_point(1))
fprintf("dtransformation0b => (%f = %f * %f;)\n",dtransformation0b(i),d,p2);
end
if(qtransformation0a(i)==my_point(2))
fprintf("qtransformation0a => (%f = %f * %f;)\n",qtransformation0a(i),q,p1);
end
if(qtransformation0b(i)==my_point(2))
fprintf("qtransformation0b => (%f = %f * %f;)\n",qtransformation0b(i),q,p2);
end
end
我希望这是你在找什么。