Matlab 按顺序打印矩阵中的整数,无重复项
我有几个包含整数的矩阵,例如:Matlab 按顺序打印矩阵中的整数,无重复项,matlab,Matlab,我有几个包含整数的矩阵,例如: matrix = [0,0,0,0,0,30,30,30,40,40,50,50,50,40,0,0,0,30,30,30] 我想打印disp,然后像这样绘制:30,40,50,40,30。基本上忽略重复项,如果它们紧随其后 另一个例子: 矩阵=[0,0,0,0,10,10,10,10,10,50,50,50,10,10,10,50,50]应给出:10,50,10,50,50 非常感谢您的帮助 让我们调用输出矩阵um Result = 0; % loop ove
matrix = [0,0,0,0,0,30,30,30,40,40,50,50,50,40,0,0,0,30,30,30]
我想打印disp,然后像这样绘制:30,40,50,40,30。基本上忽略重复项,如果它们紧随其后
另一个例子:
矩阵=[0,0,0,0,10,10,10,10,10,50,50,50,10,10,10,50,50]应给出:10,50,10,50,50
非常感谢您的帮助 让我们调用输出矩阵um
Result = 0;
% loop over all nonzero values in matrix
for Element = matrix
if Element == Result(end)
% skip if equal
continue
else
% add new value
Result(end+1) = Element;
end
end
% discard zero entries
Result = Result(Result ~= 0);
让我们调用输出矩阵um 使用以下命令:
[~,c]=find([NaN diff(matrix)]);
output=matrix(c);
output = output(output~=0)
要打印输出,只需使用:plotoutput使用以下命令:
[~,c]=find([NaN diff(matrix)]);
output=matrix(c);
output = output(output~=0)
要绘制输出,只需使用:plotoutput目前提供的所有解决方案都使用循环或函数find,这两种方法都是低效的。 只需使用矩阵指数化:
[matrix((matrix(1:end-1)-matrix(2:end))~=0), matrix(end)]
ans =
0 30 40 50 40 0 30
顺便问一下,在您的示例中,您是否在讨论0,即使它们以重复的顺序出现?目前提供的所有解决方案都使用循环或函数find,这两种方法都是低效的。 只需使用矩阵指数化:
[matrix((matrix(1:end-1)-matrix(2:end))~=0), matrix(end)]
ans =
0 30 40 50 40 0 30
顺便问一下,在您的示例中,您是否在对0进行划分,即使它们以重复的顺序出现?请使用实际的MATLAB语法给出一个实际矩阵数据的小示例,例如,矩阵=[0,0,0,0,0,30,30,30,30,30,40,40]或矩阵={[0,0,0,0,30,40,40],[0,0,30,30,30,30]}对于类似[10,20]的情况,您的意图是什么?可能有两种解决方案:[10 20]和[10 20]应该是[10 10 20]你收到了很多解决问题的想法。其中一些可能需要进一步编辑以满足您的需要,但我认为这是可以接受的。如果有人的答案解决了你的问题,你可能想接受它作为答案。请使用实际的MATLAB语法给出一个实际矩阵数据的小例子,例如,矩阵=[0,0,0,0,30,30,30,30,30,30,40]或矩阵={[0,0,0,0,30,30,40,40],[0,0,30,30,30,0]}在类似[10,20]的情况下,意图是什么?可能有两种解决方案:[10 20]和[10 20]应该是[10 10 20]你收到了很多解决问题的想法。其中一些可能需要进一步编辑以满足您的需要,但我认为这是可以接受的。如果有人的答案解决了你的问题,你可能想把它作为愚蠢问题的答案来接受,但我该如何打印呢?dispResult?@J.Smith类型结果,不带@J.Smith dispsprintf“%u\t\t”,结果也是一个可能的问题,但如何打印它?dispResult?@J.Smith类型结果,不带@J.Smith dispsprintf“%u\t\t”,结果也是可能的