cuốn sách gpt4 ai đã làm

matlab - Chuyển đổi ma trận thành vectơ xếp chồng loại bỏ tất cả các số 0 sau giá trị khác 0 cuối cùng trong mỗi hàng

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 19:26:30 33 4
mua khóa gpt4 Nike

Tôi có một ma trận có một số giá trị bằng 0 mà tôi muốn xóa.

a=[1 2 3 0 0;

>>a=

1 2 3 0 0
1 0 1 3 2
0 1 2 5 0

Tuy nhiên, tôi chỉ muốn xóa những giá trị đó sau giá trị khác 0 cuối cùng của mỗi hàng. Điều này có nghĩa là tôi muốn giữ hàng đầu tiên của 1 2 3, dòng thứ hai 1 0 1 3 2 và dòng thứ hai 0 1 2 5Cái thứ ba.

Sau đó tôi muốn lưu trữ các giá trị còn lại trong một vectơ. Trong trường hợp của ví dụ, điều này sẽ dẫn đến vectơ

b=[1 2 3 1 0 1 3 2 0 1 2 5]

Cách duy nhất tôi nghĩ ra liên quan đến điều mà tôi muốn tránh for xe đạp:

b=[];
với ii=1:size(a,1)
l=max(find(a(ii,:)));
b=[ba(ii,1:l)];
end

Có cách nào để vector hóa mã này không?

câu trả lời hay nhất

Có nhiều cách để làm điều này, đây là cách tiếp cận của tôi:

 arotate = a' %//xoay ma trận a 90 độ
b=flipud(arotate) %//lật ma trận lên và xuống
c= flipud(cumsum(b,1)) %//tổng ​​tích lũy các hàng ma trận -và sau đó lật ngược lại.
arotate(c==0)=[]

xoay =

1 2 3 1 0 1 3 2 0 1 2 5

==========================Chỉnh sửa=========================

Chỉ cần nhận ra rằng cumsum có thể có tham số hướng, vì vậy nó nên làm điều này:

 arotate = a'
b = cumsum(arotate,1,'reverse')
arotate(b==0)=[]

Tham số hướng này không có sẵn trong phiên bản 2010b của tôi, nhưng nó sẽ có sẵn nếu bạn đang sử dụng 2013a trở lên.

Về matlab - Chuyển đổi ma trận thành vectơ xếp chồng trong đó tất cả các số 0 sau giá trị khác 0 cuối cùng của mỗi hàng đều bị xóa, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/37484469/

33 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress