MATLAB 板


LINE

※ 引述《shadow5402 (shadow5402)》之銘言: : 假設我目前有一個varible x : x = : 0 0 1 2 : 0 3 2 0 : 1 3 0 0 : 2 0 0 0 : 我希望將其中不等於0的部分移動到另外一varible y : 變成 : y = : 1 3 1 2 : 2 3 2 0 : 目前我的寫法是 : for k = 1:4 : for a = 1:2 : if x(k,1) > 0 : y(a,1) = x(k,1); : end : if x(k,2) > 0 : y(a,2) = x(k,2); : end : if x(k,3) > 0 : y(a,3) = x(k,3); : end : if x(k,4) > 0 : y(a,4) = x(k,4); : end : end : end : 但結果卻是 : y = : 2 3 2 2 : 2 3 2 2 : 請問我是哪裡寫錯了?又該怎麼改呢? : 謝謝。 你最主要的錯誤是不能用a那個迴圈... 會重複assign x中非零的值到y去 y = zeros(max(sum(x>0)), size(x, 1)); for k = 1:size(x, 2) tmp = x(:, k) > 0; if any(tmp) y(1:sum(tmp), k) = x(tmp, k); end end % 上面迴圈中,可以用另外一個迴圈代替, % tmp = x(x(k,:) > 0, k); % for a = 1:length(tmp) % y(a, k) = tmp(a); % end tmp = arrayfun(@(y) y{:}(y{:}~=0), mat2cell(x, size(x, 1), ones(1, size(x,2))), ... 'UniformOutput', false); maxSize = max(cellfun(@length, tmp)); y2 = cell2mat(cellfun(@(x) [x; zeros(maxSize-length(x), 1)], tmp, ... 'UniformOutput', false)); isequal(y, y2) % 1 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.27.107
※ 文章網址: https://webptt.com/m.aspx?n=bbs/MATLAB/M.1430728467.A.BBF.html ※ 編輯: celestialgod (123.205.27.107), 05/04/2015 16:41:38
1F:推 shadow5402: 非常謝謝你的幫忙! 05/04 16:42
2F:推 shadow5402: 不好意思,我剛剛發現結果跟預期的有點不同。 05/04 17:02
3F:→ shadow5402: 會變成 y = [1 3 1 2; 2 2 3 0],而不是[1 3 1 2; 2 3 05/04 17:03
4F:→ shadow5402: 2 0] 05/04 17:03
5F:推 shadow5402: 我想到了,改成y(1:sum(tmp), k) = x(tmp, k)就可以了 05/04 17:24
6F:→ shadow5402: 感謝你的幫忙! 05/04 17:24
7F:推 shadow5402: 或是把tmp = x(k, x(k,:) > 0);改為 05/04 18:12
8F:→ shadow5402: tmp = x(x(:,k)>0, k); 05/04 18:12
這部分,很抱歉,我那時候沒很仔細看,沒發現你是要每個column... 我寫成了每個row,我稍作修改之後,就會是正確的結果了
9F:推 shadow5402: 不過我現在遇到一個問題,如果我要處理的矩陣不再是 05/04 18:16
10F:→ shadow5402: 4x4,而是5x4,4x3甚至是120x4這類型的矩陣呢? 05/04 18:17
11F:→ shadow5402: 我試了幾種方式,目前失敗中Orz 05/04 18:17
12F:推 shadow5402: 呃..我成功了XD,用第二種方式就可以了,根本不用改 05/04 18:26
13F:推 shadow5402: 第一種也行,改成tmp = x(:,k) > 0; 05/04 18:32
※ 編輯: celestialgod (123.205.27.107), 05/04/2015 18:51:43







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP