कई 3D मैट्रिसेस में से सेल वैल्यू वेक्टर कैसे बनाएं


0

मैं वर्तमान में matlab में एक काम करने की कोशिश कर रहा हूँ। स्थिति सरल है: मेरे पास लगभग 70 3-आयामी मेट्रिक्स समान आकार (192 x 192 x 30) हैं। इन मैट्रीक से एक ही इंडेक्स के मूल्यों से निर्मित वैक्टर मुझे प्राप्त करने की आवश्यकता है। आपको एक सरल उदाहरण (2D मैट्रिसेस के साथ) प्रदान करना आसान होगा:

Simple example of a desired solution

70 3 डी मैट्रीस (एक आकार: 192x192x30) के मामले में, आउटपुट 70 कॉलम और 192x192x30 पंक्तियों के साथ एक मैट्रिक्स होगा। मैं केवल मैट्रिस के साथ काम करके सबसे सरल संभव समाधान के बारे में सोच रहा हूं, और लूप के लिए नहीं। 70 मैट्रिस के मामले में अंतिम समाधान sth की तरह दिखेगा:

Desired Output

किसी भी मदद के लिए सलाह में धन्यवाद। मुझे पता है कि मतलाब में समाधान शायद बहुत सरल है, लेकिन मुझे इसे खोजने में समस्या थी।

घणी खम्मां!


लूप के उपयोग के साथ एक समाधान को लागू करना आसान होगा, लेकिन कई कोशिकाओं के साथ, यहां तक ​​कि दो सरणियों के लिए इसे चलाने में बहुत समय लगता है (नीचे दो सरणियों के लिए उदाहरण)। function output = createMatrixFromFrames(x,y) xIndex = 192; yIndex = 192; zIndex = 30; output = [0 0]; for xParam = 1:xIndex disp(xParam); for yParam = 1:yIndex for zParam = 1:zIndex output = [output; x(xParam,yParam,zParam) y(xParam,yParam,zParam)]; end end end
Piotr Kopczyński

जवाबों:


0

खैर, मुझे खुद ही एक हल मिला। थोड़ा अलग है, लेकिन मेरे उद्देश्य के लिए यह और भी बेहतर है और कुछ चीजों को सरल बनाता है। मुझे केवल गैर-नकारात्मक मूल्यों की आवश्यकता होगी। इसलिए सबसे पहले मैं कोशिकाओं का एक तार्किक सरणी बनाता हूं, जो गैर शून्य वाले हैं।

function output = createMatrixFromFrames(inputFrames, roiFrame)
numberOfFrames = length(inputFrames);
logicalRoiArray = roiFrame~=0;
output = inputFrames(1).img(logicalRoiArray)
for frameIndex = 2:numberOfFrames
    output = [output inputFrames(frameIndex).img(logicalRoiArray)];
end
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.