2017-10-24 15 views
1

サイズ80x10000の行列として与えられた10000パルスの立ち上がり時間を計算しようとしています。risetimeループの問題:Matlab

Signal Processing Toolboxから関数risetimeを使用しようとしました。私は、エラーメッセージを取得する結果

for k=1:length(PS1) 
    PS2(:,k) = risetime(PS1(:,k),80); 
end 

:計算のため

私はこのコードを使用

割り当ては、非シングルトン添字

以上の非シングルトンRHS寸法を有します

結果の行列PS2のサイズは1x1011です。

ここで問題は何ですか?

答えて

1

サンプルデータセットがないと、何も見つからなかったので、パルスの1つが1つ以上の上昇を返すか、または[]を返すと思います。 risetimesee docは、与えられた信号内で見つかった上昇の数のベクトルを返します。

第1の信号が1だけ上昇し、次に第2の信号が2である場合、右手の結果の数は左手の割り当てと一致しません。PS2をどこかにあらかじめ割り当てたと仮定します。

PS2をセル配列として定義して、どのパルスが予想される数(またはゼロ)の結果より多くを返すかを調べることができます。

PS2 = cell(size(PS1,2),1); 
for k=1:size(PS1,2) 
    PS2{k} = risetime(PS1(:,k),80); 
end 

あなたが本当に唯一、あなたは一時的なVARを必要とし、最初の要素だけを取る最初の立ち上がり時間をしたい場合は...そのイベントで何かを行う、あなたの一時varは空のように出てくる(NaNのと交換)例:

PS2 = nan(size(PS1,2),1); 
for k=1:size(PS1,2) 
    temp = risetime(PS1(:,k),80); 
    if ~isempty(temp) 
     PS2(k) = temp(1); 
    end 
end 

編集:また、私は列の数を取得するためにsize(..,2)lengthを置き換えるに注意してください。私は個人的に長さを使うのが好きではありません。だから、もしあなたが本当に長いシグナルを持っているのであれば、評価するための多くのパルスが問題に遭遇するかもしれません。

+0

ありがとう、ちょうど私が必要なもの。 – toka15