MATLAB Answers

Uerm
0

Derivative of cell with matrices

Uerm
さんによって質問されました 2019 年 10 月 10 日
最新アクティビティ Uerm
さんによって 編集されました 2019 年 10 月 14 日
Hi,
I have a variable X which is a 1x48 cell containing matrices of sizes Ax128. The number of A differs between the matrices. Basically, I want to calculate the derivative of each matrix individually along each row. How can I do that? If say, one of the matrices is 34x128, the end result of this matrix should be 34x127.

  0 件のコメント

サインイン to comment.

3 件の回答

Stephen Cobeldick
回答者: Stephen Cobeldick
2019 年 10 月 10 日
編集済み: Stephen Cobeldick
2019 年 10 月 10 日
 採用された回答

fun = @(m)diff(m,1,2);
out = cellfun(fun,X,'uni',0);

  1 件のコメント

Uerm
2019 年 10 月 10 日
Thank you very much. It works!

サインイン to comment.


Uerm
回答者: Uerm
2019 年 10 月 10 日
編集済み: Uerm
2019 年 10 月 10 日

Thanks for the help! I have an additional question:
I have a variable y1, which is also a 1x48 cell. Each of these cells is a vector. y1 is a variable for ECG signals with 48 different patients/subjects.
The variable X from the initial question (1x48 cell with Ax128 matrices) contains segments. These segments should be applied to the ECG signal for each patient to segment the ECG signal.
Say X{1,1} is a 34x128 matrix and the first row (of the first matrix) of X has start and end values X{1,1}(1,1) = 370 and X{1,1}(1,end) = 37499
The first segment of the signal (first row of the first matrix) will therefore be y1{1,1}(X{1,1}(1,1):X{1,1}(1,end)). However, this should be done for each row and each patient. How can I do that?

  1 件のコメント

Luna
2019 年 10 月 11 日
Do you mean you want to fill y1 values with X{1,1}(1,1) : X{1,1}(1,end) ?
So for example y1{1,1} will be equal to [370:37499] ? Is it that or did I get wrong?

サインイン to comment.


Uerm
回答者: Uerm
2019 年 10 月 14 日
編集済み: Uerm
2019 年 10 月 14 日

Well, sort of. I attach some screenshots of the variables and their content to make it easier to understand.
As you can see on image 1, y1 is a 1x48 cell each containing a 1x650000 double. Data_128 contains the R peaks of the ECGs in segments. So Data_128{1,1} is a 34x128 matrix - 34 segments of R peaks each containing 128 R peaks. I want to "segment" y1 based on the values in Data_128. So for patient 1, y1{1,1} should be divided in 34 segments. For patient 2 (y{1,2}), it is 28 segments etc. The first segment of y1{1,1} should be (in samples) [1:37499]. The second will be [19080:55908]. The third [37782:74473] etc. (basically from start of segment to end of segment). This should be done for all 48 patients. Hope the explanation helps.

  0 件のコメント

サインイン to comment.



Translated by