MATLAB中:如何剔除一个数组中的复数(前面元素是实数,后面是复数,复数的数量不定)。

完全剔除复数,不是通过忽略虚部将复数转化为实数。

假如要处理的数组名为a,程序为:

n=0;

for i=1:length(a)
if ( imag(a(i))~=0)
break;
end
n=n+1;
b(i)=a(i);
end

if (n~=0)
a=b;
else
disp('No real number in array a');
end

已在matlab上运行验证,可用于所有情况(即使a数组第一个元素就是复数),运行后的a数组就是除去复数后的数组。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-17
%将数组A中的复数剔除
K=find(~isreal(A));
A(K)=[];
%没调试哈
%isreal函数用来判断是不是实数
%如果不是,就把这个元素的位置存到数组K中
%最后把这些位置上的数全删掉~~
%这样比循环的效率会高很多
%Matlab做循环语句是非常慢的
第2个回答  2011-02-17
比如说a是数组
a=a(~imag(a))
相似回答