Hi. I need to analyze the rows of the vector 'value_GS_test' and transform only the numbers 254 and 255 (if any) into '[]' while keeping the same number of rows as in the original vector. Here is an example:
Right now I am using this code, but it only deletes one row (at 255) for me. How can I get the desired result?
value_GS = importdata("value_GS_test.mat"); % 6 elements
for rows_value_GS = 1 %:height(value_GS)
analysis_number = value_GS(rows_value_GS);
if analysis_number == 255
value_GS(rows_value_GS) = [];
elseif analysis_number == 254
value_GS(rows_value_GS) = [];
else
value_GS(rows_value_GS) = value_GS(rows_value_GS);
end
end

5 件のコメント

Chunru
Chunru 2023 年 7 月 18 日
How about using nan instead of []?
Stephen23
Stephen23 2023 年 7 月 18 日
"How can I get the desired result?"
Numeric arrays cannot have empty elements or "holes" in them: every element is one value.
You could use a marker value, e.g. NaN, or store a separate logical mask.
Walter Roberson
Walter Roberson 2023 年 7 月 18 日
Note however that uint8 cannot represent NaN or inf
Simon Chan
Simon Chan 2023 年 7 月 18 日
What is the final purpose of making a bracket to those positions? For display only? Or you will write it as blank on a text file?
Alberto Acri
Alberto Acri 2023 年 7 月 18 日
For display

サインインしてコメントする。

 採用された回答

Chunru
Chunru 2023 年 7 月 18 日

0 投票

load(websave("value_GS_test.mat", "https://www.mathworks.com/matlabcentral/answers/uploaded_files/1436593/value_GS_test.mat"));
value_GS = double(value_GS)
value_GS = 6×1
255 255 255 68 70 72
value_GS(value_GS>=254) = nan;
value_GS
value_GS = 6×1
NaN NaN NaN 68 70 72

7 件のコメント

Alberto Acri
Alberto Acri 2023 年 7 月 18 日
Thank you for your reply. I prefer [] instead of '0' or 'NaN'.
Chunru
Chunru 2023 年 7 月 18 日
If you prefer '[]', you may have to use string, which may not be efficient.
Stephen23
Stephen23 2023 年 7 月 18 日
A string will most likely be complex and inefficient. Perhaps a mask would work... but it depends entirely on what they are doing with this data. So first the OP needs to answer this very important question:
Alberto Acri
Alberto Acri 2023 年 7 月 18 日
Thank you for the clarification @Stephen23
Alberto Acri
Alberto Acri 2023 年 7 月 18 日
Hi @Chunru. Is it normal that with your code I am displaying '0's instead of 'NaN'?
Dyuman Joshi
Dyuman Joshi 2023 年 7 月 18 日
Yes, it is.
Refer to @Walter Roberson's comment above - "Note however that uint8 cannot represent NaN or inf".
When you try to assign NaN (or Inf for that matter) to a uint8 (or any integer data type) array, it will display 0 instead of NaN
%Signed integer data type example -
y = int16(1:4)
y = 1×4
1 2 3 4
%Assinging 2nd element of the vector to be NaN
y(2) = NaN
y = 1×4
1 0 3 4
%Unsigned integer data type example -
%Initializing NaN with an unsigned integer leads to 0 as well
z = uint8([1 23 NaN 19 5])
z = 1×5
1 23 0 19 5
Alberto Acri
Alberto Acri 2023 年 7 月 18 日
Okay. Thanks for the explanation @Dyuman Joshi. I am unfamiliar with Matlab.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeNumeric Types についてさらに検索

製品

リリース

R2021b

質問済み:

2023 年 7 月 18 日

コメント済み:

2023 年 7 月 18 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by